Introduzione
La ridenominazione delle directory è una delle operazioni di base che è spesso necessario eseguire su un sistema Linux. È possibile rinominare le directory dal file manager della GUI con un paio di clic o utilizzando il terminale della riga di comando.
Questo articolo spiega come rinominare le directory usando la riga di comando e il comando mv
.
Rinominare le directory
Nei sistemi operativi Linux e Unix, è possibile utilizzare il comando mv
(short of move) per rinominare o spostare file e directory da una posizione a un'altra.
La sintassi del comando mv
per spostare le directory è la seguente:
mv [OPTIONS] source destination
Ad esempio, per rinominare la directory dir1
come dir2
si esegue:
mv dir1 dir2
Quando si rinomina la directory, è necessario specificare esattamente due argomenti per il comando mv
. Il primo argomento è il nome corrente della directory e il secondo è il nuovo nome.
È importante notare che se dir2
esiste già, dir1
viene spostato nella directory dir2
.
Per rinominare una directory che non si trova nella directory di lavoro corrente, è necessario specificare il percorso assoluto o relativo:
mv /home/user/dir1 /home/user/dir2
Rinominare più directory
Rinominare una singola directory è un compito semplice, ma rinominare più directory contemporaneamente può essere una sfida, specialmente per i nuovi utenti Linux.
La ridenominazione di più directory contemporaneamente è raramente necessaria.
Rinominare più directory con mv
Il comando mv
può rinominare solo un file alla volta. Tuttavia, può essere utilizzato insieme ad altri comandi come find
o all'interno di loop per rinominare più file contemporaneamente.
Ecco un esempio che mostra come utilizzare il loop for
in Bash per aggiungere la data corrente ai nomi di tutte le directory nella directory di lavoro corrente:
for d in *; do
if [ -d "$d" ]; then
mv -- "$d" "${d}_$(date +%Y%m%d)"
fi
done
Analizziamo il codice riga per riga:
- La prima riga crea un ciclo e scorre attraverso un elenco di tutti i file.
- La seconda riga controlla se il file è una directory.
- La terza riga aggiunge la data corrente a ciascuna directory.
Ecco una soluzione per lo stesso compito usando mv
in combinazione con find
:
find . -mindepth 1 -prune -type d -exec sh -c 'd="{}"; mv -- "$d" "${d}_$(date +%Y%m%d)"' \;
Il comando find
passa tutte le directory a mv
una a una usando l'opzione -exec
. La stringa {}
è il nome della directory attualmente in fase di elaborazione.
Come puoi vedere dagli esempi, rinominare più directory con mv
non è un compito facile in quanto richiede una buona conoscenza degli script di Bash.
Rinominare più directory con rename
Il comando rename
viene utilizzato per rinominare più file e directory. 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. Useremo la versione Perl del comando rename
. I file vengono rinominati in base all'espressione regolare perl fornita.
L'esempio seguente mostra come sostituire gli spazi nei nomi di tutte le directory nella directory di lavoro corrente con caratteri di sottolineatura:
find . -mindepth 1 -prune -type d | rename 'y/ /_/'
Per sicurezza, usa l'opzione -n
per stampare i nomi delle directory da rinominare senza però rinominarle.
Ecco un altro esempio che mostra come convertire i nomi di directory in minuscolo:
find . -mindepth 1 -prune -type d | rename 'y/A-Z/a-z/'
Conclusione
Ti abbiamo mostrato come usare i comandi mv
per rinominare le directory.