La ridenominazione dei file è una delle attività più basilari che spesso è necessario eseguire su un sistema Linux. Puoi rinominare i file utilizzando un file manager della GUI o tramite il terminale della riga di comando.
Rinominare un singolo file è facile, ma rinominare più file contemporaneamente può essere una sfida, soprattutto per gli utenti che non conoscono Linux.
In questo tutorial, ti mostreremo come utilizzare il mv
e rename
comandi per rinominare file e directory.
Rinominare i file con mv
Comando #
Il mv
command(short of move) viene utilizzato per rinominare o spostare i file da una posizione all'altra. La sintassi per mv
il comando è il seguente:
mv [OPTIONS] source destination
Il source
può essere uno o più file, oppure directory e destination
può essere un singolo file o directory.
- Se specifichi più file come
source
, ladestination
deve essere una directory. In questo caso, ilsource
i file vengono spostati nella directory di destinazione. - Se specifichi un singolo file come
source
e ladestination
target è una directory esistente, quindi il file viene spostato nella directory specificata. - Per rinominare un file, devi specificare un singolo file come
source
e un singolo file comedestination
obiettivo.
Ad esempio, per rinominare il file file1.txt
come file2.txt
correresti:
mv file1.txt file2.txt
Rinominare più file con mv
Comando #
Il mv
comando può rinominare un solo file alla volta, ma può essere utilizzato insieme ad altri comandi come find
o dentro bash for
o while
loop per rinominare più file.
L'esempio seguente mostra come utilizzare il ciclo Bash for per rinominare tutti i .html
file nella directory corrente modificando il .html
estensione a .php
.
for f in *.html; do
mv -- "$f" "${f%.html}.php"
done
Analizziamo il codice riga per riga:
- La prima riga crea un
for
scorre e scorre un elenco di tutti i file che confinano con.html
. - La seconda riga si applica a ciascun elemento dell'elenco e sposta il file in uno nuovo sostituendo
.html
con.php
. La parte${file%.html}
sta usando l'espansione del parametro della shell per rimuovere il.html
parte dal nome del file. done
indica la fine del segmento del ciclo.
Ecco un esempio usando mv
in combinazione con find
per ottenere lo stesso risultato di cui sopra:
find . -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' \;
Il find
il comando sta passando tutti i file che terminano con .html
nella directory corrente in mv
uno per uno usando il -exec
opzione. La stringa {}
è il nome del file attualmente in elaborazione.
Come puoi vedere dagli esempi sopra, rinominare più file usando mv
comando non è un compito facile in quanto richiede una buona conoscenza degli script Bash.
Rinominare i file con rename
Comando #
Il rename
comando viene utilizzato per rinominare più file. Questo comando è più avanzato di mv
poiché richiede una conoscenza di base delle espressioni regolari.
Esistono due versioni di rename
comando con sintassi diversa. In questo tutorial, useremo la versione Perl di rename
comando. Se questa versione non è installata sul tuo sistema, puoi installarla facilmente utilizzando il gestore di pacchetti della tua distribuzione.
-
Installa
rename
su Ubuntu e Debiansudo apt install rename
-
Installa
rename
su CentOS e Fedorasudo yum install prename
-
Installa
rename
su Arch Linuxyay perl-rename ## or yaourt -S perl-rename
La sintassi per rename
il comando è il seguente:
rename [OPTIONS] perlexpr files
Il rename
comando rinominerà i files
secondo il perlexpr
specificato espressione regolare. Puoi leggere di più sulle espressioni regolari perl qui.
L'esempio seguente cambierà tutti i file con estensione .html
a .php
:
rename 's/.html/.php/' \*.html
Puoi usare il -n
opzione per stampare i nomi dei file da rinominare, senza rinominarli.
rename -n 's/.html/.php/' \*.html
L'output sarà simile a questo:
rename(file-90.html, file-90.php)
rename(file-91.html, file-91.php)
rename(file-92.html, file-92.php)
rename(file-93.html, file-93.php)
rename(file-94.html, file-94.php)
Per impostazione predefinita, il rename
comando non sovrascrive i file esistenti. Passa il -f
opzione per consentire la sovrascrittura dei file esistenti:
rename -f 's/.html/.php/' \*.html
Di seguito sono riportati alcuni esempi più comuni di come utilizzare rename
comando:
-
Sostituisci gli spazi nei nomi dei file con i trattini bassi
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/' \*
Conclusione #
Ti abbiamo mostrato come utilizzare il mv
e rename
comandi per rinominare i file.
Ci sono anche altri comandi per rinominare i file in Linux, come mmv
. I nuovi utenti Linux che sono intimiditi dalla riga di comando possono utilizzare strumenti di ridenominazione batch della GUI come Métamorphose.
Se hai domande o feedback, sentiti libero di lasciare un commento.