Spieprzyłem i przypadkowo mam kilka plików z rozszerzeniem .mp3.mp3.mp3.mp3
Jak mogę je zmienić, rekurencyjnie - i w wielu katalogach - aby ustawić je jako sprawiedliwe .mp3?
Spieprzyłem i przypadkowo mam kilka plików z rozszerzeniem .mp3.mp3.mp3.mp3
Jak mogę je zmienić, rekurencyjnie - i w wielu katalogach - aby ustawić je jako sprawiedliwe .mp3?
Odpowiedzi:
Za pomocą findpolecenia bashi kreatywnych skryptów można to magicznie wyczyścić. Poniższe skrypty zostały przetestowane w systemie Mac OS X 10.9.5, ale powinny również działać dobrze w systemie Linux. Najpierw uruchom to jako „rozruch próbny”, aby upewnić się, że celujesz we właściwe pliki:
find '/path/to/your/files' -type f -name '*.mp3.mp3*' |\
while read RAW_FILE
do
DIRNAME=$(dirname "$RAW_FILE")
BASENAME=$(basename "$RAW_FILE")
FILENAME="${BASENAME%%.*}"
EXTENSION="${BASENAME#*.}"
echo "mv "${RAW_FILE}" "${DIRNAME}/${FILENAME}".mp3"
done
Najpierw należy zmienić, /path/to/your/filesaby dopasować rzeczywistą ścieżkę do plików podlegających usterce w systemie. Należy również pamiętać, ostatni wiersz, który jest echoo mvpoleceniu (MOVE). Robię to, aby upewnić się, że skrypt celuje we właściwe pliki.
Podstawowa findlogika jest następująca:
find '/path/to/your/files' -type f -name '*.mp3.mp3*'
Co w zasadzie oznacza: „Znajdź wszystkie pliki na ścieżce /path/to/your/files, które w rzeczywistości są plikami (a nie katalogami), które mają pasujący wzorzec nazw plików *.mp3.mp3*. To powinno przechwycić wszystkie / wszystkie pliki, które mają więcej niż jeden .mp3dołączony do nich; .mp3.mp3, .mp3.mp3.mp3, .mp3.mp3.mp3.mp3, .mp3.mp3.mp3.mp3.mp3, Itd ...
Skrypt nie zadaje sobie trudu radzenia sobie z plikami, które mają tylko poprawność, .mp3co jest zdecydowanie zaletą pod względem szybkości, jeśli masz tylko niewielki podzbiór plików, .mp3.mp3.mp3.mp3zamiast konieczności zmiany nazwy wszystkich plików .mp3.
Kiedy więc uruchomisz, powinieneś zobaczyć listę „suchych” mvpoleceń, które naprawią twój problem: Znajdź wszystkie te wiele .mp3plików i zmień ich nazwę na właściwą, pojedynczą .mp3.
Teraz, gdy to działa dobrze, po prostu uruchom ostatni skrypt w następujący sposób:
find '/path/to/your/files' -type f -name '*.mp3.mp3*' |\
while read RAW_FILE
do
DIRNAME=$(dirname "$RAW_FILE")
BASENAME=$(basename "$RAW_FILE")
FILENAME="${BASENAME%%.*}"
EXTENSION="${BASENAME#*.}"
mv "${RAW_FILE}" "${DIRNAME}/${FILENAME}".mp3
done
Zauważ, że ostatni wiersz to aktualne, funkcjonalne mvpolecenie. Po uruchomieniu tej wersji skryptu cały katalog zostanie przeszukany pod kątem wielu .mp3plików, a następnie uruchomi pełne mvpolecenie, aby rozwiązać problem.