Rinominare più file e directory con mv
command può essere un processo noioso in quanto comporta la scrittura di comandi complessi con pipe, loop e così via.
Qui è dove il rename
il comando è utile. Rinomina i file dati sostituendo l'espressione di ricerca nel loro nome con la sostituzione specificata.
In questo tutorial spiegheremo come usare rename
comando per rinominare i file in batch.
Installazione di rename
#
Esistono due versioni di rename
comando con sintassi e caratteristiche diverse. Useremo la versione Perl di rename
comando.
Se questa versione non è installata sul tuo sistema, usa il gestore di pacchetti della tua distribuzione Linux per installarla:
-
Ubuntu e Debian
sudo apt update
sudo apt install rename
-
CentOS e Fedora
sudo yum install prename
-
Arch Linux
yay perl-rename
Utilizzo di rename
#
Quella che segue è la sintassi generale per rename
comando:
rename [OPTIONS] perlexpr files
Il rename
comando è fondamentalmente uno script Perl. Rinominerà i files
dati secondo il perlexpr
specificato espressione regolare. Puoi leggere le espressioni regolari Perl qui.
Ad esempio, il comando seguente cambierà l'estensione di tutti i .css
file in .scss
:
rename 's/.css/.scss/' *.css
Spieghiamo il comando in modo più dettagliato:
s/search_pattern/replacement/
- L'operatore di sostituzione..css
- Il modello di ricerca. È il primo argomento nell'operatore di sostituzione. Ilrename
comando cercherà questo modello nel nome del file specificato e, se trovato, lo sostituirà con l'argomento sostitutivo..scss
- Il rimpiazzo. Il secondo argomento nell'operatore di sostituzione.*.css
- Tutti i file con estensione ".css". Carattere jolly (*
) è un simbolo utilizzato per rappresentare zero, uno o più caratteri.
Prima di eseguire il comando vero e proprio e rinominare i file e le directory è sempre una buona idea usare il -n
opzione che eseguirà una "corsa a secco" e ti mostrerà quali file verranno rinominati:
rename -n 's/.css/.scss/' *.css
L'output sarà simile a questo:
rename(file-0.css, file-0.scss)
rename(file-1.css, file-1.scss)
rename(file-2.css, file-2.scss)
rename(file-3.css, file-3.scss)
rename(file-4.css, file-4.scss)
Per impostazione predefinita, il rename
comando non sovrascrive i file esistenti. Usa il -f
opzione che dice a rename
per sovrascrivere i file esistenti:
rename -f 's/.css/.scss/' *.css
Se vuoi rename
per stampare i nomi dei file che sono stati rinominati con successo, usa il -v
opzione (dettagliata):
rename -v 's/.css/.scss/' *.css
file-0.css renamed as file-0.scss
file-1.css renamed as file-1.scss
file-2.css renamed as file-2.scss
file-3.css renamed as file-3.scss
file-4.css renamed as file-4.scss
rename
Esempi #
Di seguito sono riportati alcuni esempi comuni di come utilizzare il comando rename:
Sostituisci gli spazi nei nomi dei file con i caratteri di sottolineatura #
rename 'y/ /_/' *
Converti i nomi dei file in minuscolo #
rename 'y/A-Z/a-z/' *
Converti i nomi dei file in maiuscolo #
rename 'y/a-z/A-Z/' *
Rimuovi .bak
dai nomi dei file #
rename 's/\.bak$//' *.bak
Rinomina .jpeg
e .JPG
nomi di file in .jpg
#
rename 's/\.jpe?g$/.jpg/i' *
Conclusione #
Il rename
Il comando consente di rinominare più file contemporaneamente, utilizzando le espressioni regolari Perl.
Se hai domande o feedback, sentiti libero di lasciare un commento.