Używam renamecały czas. Jest to dość proste, ale mam nadzieję, że znasz podstawowe wyrażenia regularne:
rename "s/SEARCH/REPLACE/g" *
To zastąpi ciąg SEARCHz REPLACEkażdym pliku (to znaczy *). Te /gśrodki globalne, więc jeśli miał SEARCH_SEARCH.jpg, to by zostać zmieniona REPLACE_REPLACE.jpg. Gdybyś tego nie /gzrobił, zastąpiłby go tylko raz, a więc teraz nazwany REPLACE_SEARCH.jpg. Jeśli chcesz, /iaby wielkość liter nie była rozróżniana, dodaj (to byłoby /gilub /igna końcu).
Dzięki wyrażeniom regularnym możesz zrobić znacznie więcej.
Zauważ, że renamejest to polecenie prename(inaczej Perl rename), które obsługuje pełne wyrażenia regularne Perla. Jest inny, renamektóry wykorzystuje wzorce i nie jest tak potężny. prenameKiedyś był instalowany domyślnie na Ubuntu (wraz z Perlem), ale teraz możesz zrobić:
sudo apt install rename
Oto kilka przykładów:
Prefiks
Dodaj :
rename 's/^/MyPrefix_/' *
document.pdf przemianowany na MyPrefix_document.pdf
Usuń :
Możesz także usunąć niechciane ciągi. Załóżmy, że miałeś 20 plików MP3 o nazwach podobnych CD RIP 01 Song.mp3i chciałeś usunąć część „CD RIP” i chciałeś usunąć ją ze wszystkich za pomocą jednego polecenia.
rename 's/^CD RIP //' *
CD RIP 01 Song.mp3 do 01 Song.mp3
Zwróć uwagę na dodatkowe miejsce w środku '^CD RIP ', bez tego miejsca wszystkie pliki miałyby spację jako pierwszy znak pliku. Zauważ też, że zadziała to bez ^znaku, ale pasowałoby CD RIP do dowolnej części nazwy pliku. Te ^gwarancje to tylko usuwa znaki, jeśli są one początek pliku.
Przyrostek
Dodaj :
rename 's/$/_MySuffix/' *
document.pdf przemianowany na document.pdf_MySuffix
Zmień :
rename 's/\.pdf$/.doc/' *
zmieni się Something.pdfw Something.doc. (Powodem odwrotny ukośnik jest .to wieloznaczny w regexp więc .pdfmeczów qPDFnatomiast \.pdftylko pasuje dokładnie ciąg .pdf. Również bardzo ważne jest, aby pamiętać, że jeśli nie jesteś zaznajomiony z BASH, należy umieścić backslashy w apostrofach! Nie można pominąć cytaty lub użyj podwójnych cudzysłowów, albo bash spróbuje je przetłumaczyć. Bash \. i "\." równa się .. (Ale używane są podwójne cudzysłowy i odwrotne ukośniki, na przykład „\ n” dla nowej linii, ale ponieważ "\."nie jest prawidłową sekwencją odwrotną, tłumaczy się na .)
W rzeczywistości możesz nawet zawrzeć części ciągu w cudzysłowie zamiast całości: 's/Search/Replace/g'jest taki sam jak s/'Search'/'Replace'/gi s/Search/Replace/gBASH. Musisz tylko uważać na znaki specjalne (i spacje).
Sugeruję użycie tej -nopcji, jeśli nie jesteś pewien, że masz poprawne wyrażenia regularne. Pokazuje, co zostanie przemianowane, a następnie wychodzi bez robienia tego. Na przykład:
rename -n s/'One'/'Two'/g *
Spowoduje to wyświetlenie wszystkich zmian, które wprowadziłby, gdyby nie umieścić -ntam flagi. Jeśli wygląda dobrze, naciśnij, Upaby wrócić, a następnie skasuj -ni naciśnij Enter(lub zamień na, -vaby wyświetlić wszystkie wprowadzone zmiany).
Uwaga : renameDomyślnie wersje Ubuntu powyżej 17.04 nie są dostarczane , jednak nadal są dostępne w repozytoriach. Użyj, sudo apt install renameaby go zainstalować