Lo uso rename
sempre. È piuttosto semplice, ma spero che tu conosca la regex di base:
rename "s/SEARCH/REPLACE/g" *
Questo sostituirà la stringa SEARCH
con REPLACE
in ogni file (cioè, *
). Il /g
mezzo è globale, quindi se avessi un SEARCH_SEARCH.jpg
, verrebbe rinominato REPLACE_REPLACE.jpg
. Se non lo avessi fatto /g
, avrebbe fatto la sostituzione solo una volta, e quindi ora chiamato REPLACE_SEARCH.jpg
. Se si desidera la distinzione tra maiuscole e minuscole, aggiungere /i
(che sarebbe, /gi
o /ig
alla fine).
Con le espressioni regolari, puoi fare molto di più.
Si noti che questo rename
è il comando prename
(noto anche come Perl rename
), che supporta espressioni regolari complete Perl. Ce n'è un altro rename
che usa schemi e non è così potente. prename
era installato di default su Ubuntu (insieme a Perl), ma ora potresti dover fare:
sudo apt install rename
Ecco alcuni esempi:
Prefisso
Aggiungi :
rename 's/^/MyPrefix_/' *
document.pdf
rinominato in MyPrefix_document.pdf
Rimuovi :
Inoltre è possibile rimuovere stringhe indesiderate. Supponiamo che tu abbia 20 file MP3 chiamati like CD RIP 01 Song.mp3
e che desideri rimuovere la parte "CD RIP" e che desideri rimuoverli da tutti con un solo comando.
rename 's/^CD RIP //' *
CD RIP 01 Song.mp3
per 01 Song.mp3
Notare lo spazio aggiuntivo in '^CD RIP '
, senza lo spazio tutti i file avrebbero uno spazio come primo carattere del file. Inoltre, funzionerà senza il ^
carattere, ma corrisponderebbe CD RIP
a qualsiasi parte del nome file. La ^
garanzia rimuove i caratteri solo se sono l'inizio del file.
Suffisso
Aggiungi :
rename 's/$/_MySuffix/' *
document.pdf
rinominato in document.pdf_MySuffix
Cambiamento :
rename 's/\.pdf$/.doc/' *
cambierà Something.pdf
in Something.doc
. (Il motivo della barra rovesciata è che .
è un carattere jolly in regexp, quindi .pdf
corrisponde qPDF
mentre corrisponde \.pdf
solo alla stringa esatta .pdf
. Inoltre, è molto importante notare che se non si ha familiarità con BASH, è necessario inserire barre rovesciate tra virgolette SINGOLE! Non è possibile omettere le virgolette oppure usa le virgolette doppie, o bash proverà a tradurle. In bash \.
ed è "\."
uguale .
(ma vengono usate virgolette doppie e barre rovesciate, ad esempio "\ n" per una nuova riga, ma poiché "\."
non è una sequenza di back escape valida, si traduce in .
)
In realtà, puoi anche racchiudere le parti della stringa tra virgolette anziché nel loro insieme: 's/Search/Replace/g'
è uguale a s/'Search'/'Replace'/g
e s/Search/Replace/g
BASH. Devi solo stare attento ai caratteri speciali (e agli spazi).
Ti suggerisco di usare l' -n
opzione quando non sei sicuro di avere le espressioni regolari corrette. Mostra ciò che sarebbe stato rinominato, quindi esce senza farlo. Per esempio:
rename -n s/'One'/'Two'/g *
Questo elencherà tutte le modifiche che avrebbe apportato, se non avessi messo la -n
bandiera lì. Se ha un bell'aspetto, premere Upper tornare indietro, quindi cancellare -n
e premere Enter(o sostituirlo con -v
per visualizzare tutte le modifiche apportate).
Nota : le versioni di Ubuntu precedenti alla 17.04 non vengono fornite rename
per impostazione predefinita, tuttavia è ancora disponibile nei repository. Utilizzare sudo apt install rename
per installarlo