spostare e rinominare file con il terminale unix
Sommario:
- Rinominare i file con il comando mv
- Rinominare più file con il comando mv
- Rinominare i file con il comando Rinomina
- Conclusione
La ridenominazione di file e directory è una delle attività di base che spesso è necessario eseguire su un sistema Linux.
Rinominare un singolo file è facile, ma rinominare più file contemporaneamente può essere una sfida, specialmente per gli utenti che non conoscono Linux. È possibile rinominare i file utilizzando un file manager della GUI o tramite il terminale della riga di comando.
In questo tutorial, ti mostreremo come usare i comandi
mv
e
rename
per rinominare file e directory.
Rinominare i file con il comando mv
Il comando
mv
(abbreviato da move) viene utilizzato per rinominare o spostare i file da una posizione a un'altra. La sintassi per il comando
mv
è la seguente:
mv source destination
La
source
può essere uno o più file o directory e la
destination
può essere un singolo file o directory.
- Se si specificano più file come
source
, ladestination
deve essere una directory. In questo caso, i file disource
vengono spostati nella directory di destinazione. Se si specifica un singolo file comesource
e ladestination
destinazione è una directory esistente, il file viene spostato nella directory specificata. Per rinominare un file è necessario specificare un singolo file comesource
e singolo file comedestination
.
Ad esempio, per rinominare il file
file1.txt
come
file2.txt
dovresti eseguire:
Rinominare più file con il comando mv
Il comando
mv
può rinominare solo un file alla volta, ma può essere usato insieme ad altri comandi come
find
o inside bash per o mentre i loop per rinominare più file.
L'esempio seguente mostra come utilizzare il ciclo Bash for per rinominare tutti i file
.html
nella directory corrente modificando l'estensione
.html
in
.php
.
for f in *.html; do mv -- "$f" "${f%.html}.php" done
Analizziamo il codice riga per riga:
- La prima riga crea un ciclo for e scorre un elenco di tutti i file che bordano 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 shell per rimuovere la parte.html
dal nomefile.done indica la fine del segmento del ciclo.
Possiamo anche usare il comando
mv
in combinazione con
find
per ottenere lo stesso di cui sopra.
find. -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' ;
Il comando find sta passando tutti i file che terminano con
.html
nella directory corrente al comando
mv
uno alla volta usando l'
-exec
. La stringa
{}
è il nome del file attualmente in elaborazione.
Come puoi vedere dagli esempi sopra, rinominare più file usando il comando
mv
non è un compito facile in quanto richiede una buona conoscenza degli script Bash.
Rinominare i file con il comando Rinomina
Il comando
rename
viene utilizzato per rinominare più file. Questo comando è più avanzato di
mv
in quanto richiede una conoscenza di base delle espressioni regolari.
Esistono due versioni del comando
rename
con sintassi diversa. In questo tutorial, useremo la versione perl del comando
rename
. Se non hai questa versione installata sul tuo sistema, puoi installarla facilmente usando il gestore pacchetti della tua distribuzione.
-
Installa rinomina su Ubuntu e Debian
sudo apt install rename
Installa rinomina su CentOS e Fedora
sudo yum install prename
Installa rinomina su Arch Linux
yay perl-rename ## or yaourt -S perl-rename
La sintassi per il comando
rename
è la seguente:
rename perlexpr files
Il comando
rename
rinominerà tutti i
files
base
perlexpr
regolare
perlexpr
specificata. È possibile informazioni sulle espressioni regolari perl qui.
Ad esempio, il comando seguente cambierà tutti i file con estensione
.html
in
.php
:
rename 's/.html/.php/' *.html
È possibile utilizzare l'argomento
-n
per stampare i nomi dei file da rinominare, senza rinominarli.
rename -n 's/.html/.php/' *.html
L'output sarà simile al seguente:
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 comando rename non sovrascriverà i file esistenti. Passare l'argomento
-f
per consentire la
-f
dei file esistenti.
rename -f 's/.html/.php/' *.html
Di seguito sono riportati alcuni esempi più comuni su come utilizzare il comando rename:
-
Sostituisci gli spazi nei nomi dei file con caratteri di sottolineatura
rename 'y/ /_/' *
Converti i nomi di file in minuscolo
rename 'y/AZ/az/' *
Converti i nomi dei file in maiuscolo
rename 'y/az/AZ/' *
Conclusione
Ormai dovresti avere una buona conoscenza di come usare i comandi
mv
e
rename
per rinominare i file. Naturalmente, ci sono 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 rinomina batch GUI come Métamorphose.
Come rinominare in modo efficiente i file rinominando usando il renamer personale

Rinomina automaticamente più file, monitora la directory usando il renamer personale per Windows.
Come rinominare facilmente i file in batch in mac os x yosemite

Ecco come rinominare facilmente i file in Mac OS X Yosemite.
Come copiare file e directory in Linux

La copia di file e directory è una delle attività più comuni che eseguirai quando lavori sulla riga di comando. In Linux, ci sono diversi comandi per copiare file con cp e rsync che sono gli strumenti più utilizzati.