Introduzione
Linux offre diverse opzioni per rinominare i file, incluso l'utilizzo della GUI e più comandi del terminale dedicati. Ciò rende relativamente facile rinominare i singoli file, ma può essere difficile rinominare più file contemporaneamente.
In questo tutorial, esamineremo diversi comandi che puoi utilizzare nel terminale Linux per rinominare i file in Linux.

Prerequisiti
- Un sistema che esegue una distribuzione Linux
- Un account con privilegi sudo
- Accesso alla finestra del terminale/riga di comando
- Accesso a un editor di testo, come Vim o Nano
Rinomina i file con il comando mv
Il mv
di Linux Il comando (sposta) viene utilizzato per spostare file e directory dal terminale. Utilizza la seguente sintassi:
mv [options] [source] [destination]
Se specifichi una directory come destinazione quando utilizzi mv
comando, il file di origine si sposta in quella directory. Se la destinazione è un altro nome file, il mv
comando rinomina invece il file di origine con quel nome.
Rinomina un singolo file con il comando mv
Usando il mv
comando con la sua sintassi predefinita permette di rinominare un singolo file:
mv [options] [current file name] [new file name]
Ad esempio, se vogliamo rinominare example1.txt in esempio2.txt , useremmo:
mv example1.txt example2.txt
Poiché non c'è output se il comando ha esito positivo, stiamo usando ls
comando per verificare se il nome è cambiato:
ls -l

Rinomina più file con il comando mv
Da solo, il mv
comando rinomina un singolo file. Tuttavia, combinandolo con altri comandi puoi rinominare più file contemporaneamente.
Un metodo consiste nell'usare il find
comando per selezionare più file con un nome simile, quindi utilizzare il mv
comando per rinominarli:
find . -depth -name "[current file name element]" -exec sh -c 'f="{}"; mv -- "$f" "${f%[current file name element]}[new file name element]"' \;
Usando questa sintassi, il find
Il comando definisce un elemento del nome file corrente come parametro di ricerca. Successivamente, -exec
esegue il mv
comando su tutti i file che corrispondono alla ricerca, cambiando i nomi dei file correnti con quello nuovo.
Ad esempio, se abbiamo example1.txt , esempio2.txt e example3.txt e vuoi cambiare l'estensione in .pdf :
find . -depth -name "*.txt" -exec sh -c 'f="{}"; mv -- "$f" "${f%.txt}.pdf"' \;

Un altro metodo consiste nell'usare il mv
comando come parte di un <strong>for</strong>
ciclo in uno script bash.
Utilizzando lo stesso esempio, inizia creando e aprendo un file di script bash utilizzando un editor di testo come Nano:
sudo nano rename_files.sh
Aggiungi le seguenti righe allo script:
#!/bin/bash
for f in *.txt; do
mv -- "$f" "${f%.txt}.pdf"
done
Nello script sopra:
- La prima riga indica allo script di cercare tutti i file nella directory corrente che terminano con .txt .
- La seconda riga utilizza il
mv
comando su ogni file trovato per sostituire il .txt estensione con .pdf . - La terza riga termina il segmento del ciclo.
Premi Ctrl+X , quindi digita Y e premi Invio per salvare le modifiche allo script ed uscire.
Usa il sh
comando per eseguire lo script:
sh rename_files.sh

Rinomina file con il comando rinomina
Il rename
comando viene utilizzato per rinominare più file o directory in Linux. Offre più funzioni rispetto a mv
comando ma può essere più difficile da usare poiché richiede una conoscenza di base delle espressioni Perl.
Come installare il comando rinomina
Su molte distribuzioni Linux, rename
il comando non è disponibile per impostazione predefinita. Se nel tuo sistema manca il rename
comando, installalo con:
- Per Ubuntu e Debian, usa
sudo apt install rename
- Per CentOS e Fedora, usa
sudo yum install prename
- Per Arch Linux, usa
sudo pacman -S
rinomina
rinominare la sintassi e le opzioni dei comandi
Esistono tre tipi di espressioni regolari Perl:corrispondenza , sostituire e traduci . Il rename
Il comando utilizza espressioni sostitutive e traduci per modificare i nomi di file e directory.
Le espressioni sostitutive sostituiscono una parte del nome del file con una stringa diversa. Usano la seguente sintassi:
rename [options] 's/[filename element]/[replacement]/' [filename]
Con questa sintassi, il comando rinomina il file sostituendo la prima occorrenza dell'elemento filename con la sostituzione . Nel comando sopra:
rename
:richiama il comando di ridenominazione.[options]
:fornisce un argomento facoltativo che cambia il modo in cui viene eseguito il comando.s
:indica un'espressione sostitutiva.[filename element]
:specifica la parte del nome file che desideri sostituire.[replacement]
:specifica una sostituzione per la parte del nome file corrente.[filename]
:definisce il file che vuoi rinominare.
Un'espressione translate traduce una stringa di caratteri in un'altra, carattere per carattere. Questo tipo di espressione utilizza la seguente sintassi:
rename [options] 'y/[string 1]/[string 2]/' [filename]
Un esempio di rename
comando utilizzando un'espressione di traduzione:
rename 'y/abc/xyz/'
In questo esempio, ogni a il carattere nel nome del file viene sostituito da una x , ogni b da una y e ogni c da una z .
Il rinominare comando utilizza le seguenti opzioni:
-a
:Sostituisce tutte le occorrenze dell'elemento filename invece del primo.-f
:Forza la sovrascrittura dei file esistenti.-h
:Visualizza il testo della guida.-i
:Visualizza un messaggio prima di sovrascrivere i file esistenti.-l
:Sostituisce l'ultima occorrenza dell'elemento filename invece della prima.-n
:esegue una corsa a secco, senza apportare modifiche permanenti. Combinato al meglio con l'output dettagliato (-v
).-s
:Rinomina la destinazione invece del collegamento simbolico.-v
:mostra una versione dettagliata dell'output.-V
:Visualizza la versione del comando.
rinomina Esempi di comandi
Tornando al nostro ultimo esempio, per cambiare l'estensione del file da .txt in .pdf , usa:
rename -v 's/.txt/.pdf/' *.txt

La sostituzione di una parte diversa del nome del file segue la stessa sintassi. Per rinominare example1.txt , esempio2.txt e example3.txt a test1.txt , test2.txt e text3.txt , usa:
rename -v 's/example/test/' *.txt

Il rename
l'opzione consente inoltre di eliminare una parte del nome del file omettendo la parte sostitutiva dell'espressione. Ad esempio, se vogliamo abbreviare esempio in ex :
rename -v 's/ample//' *.txt

Un altro uso per rename
l'opzione è rinominare i file con nomi simili. Ad esempio, se vogliamo rinominare i file con esempio e campione a loro nome per testare :
rename -v 's/(ex|s)ample/test/' *.txt

Il rename
Il comando consente inoltre di utilizzare le espressioni di traduzione per rinominare i file carattere per carattere. Ad esempio, se desideri rinominare più file denominati file di esempio sostituendo lo spazio vuoto con un trattino basso (_ ):
rename -v 'y/ /\_/' *.txt

Per convertire i caratteri minuscoli nei nomi dei file in caratteri maiuscoli, usa:
rename -v 'y/a-z/A-Z/' *.txt

Il contrario funziona anche se cambiamo l'ordine dei caratteri maiuscoli e minuscoli nell'espressione:
rename -v 'y/A-Z/a-z/' *.TXT
