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, ladestinationdeve essere una directory. In questo caso, ilsourcei file vengono spostati nella directory di destinazione. - Se specifichi un singolo file come
sourcee ladestinationtarget è una directory esistente, quindi il file viene spostato nella directory specificata. - Per rinominare un file, devi specificare un singolo file come
sourcee un singolo file comedestinationobiettivo.
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
forscorre 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
.htmlcon.php. La parte${file%.html}sta usando l'espansione del parametro della shell per rimuovere il.htmlparte dal nome del file. doneindica 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
renamesu Ubuntu e Debiansudo apt install rename -
Installa
renamesu CentOS e Fedorasudo yum install prename -
Installa
renamesu 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.