Credo che tu sappia già come rinominare i file in Linux con il comando mv. Lo usi semplicemente nel formato:
mv old_file_name new_file_name
Non c'è niente di sbagliato in questo metodo. Questo è il modo standard, dopotutto.
Ma che dire della situazione in cui devi rinominare diversi file. Usare il comando mv uno per uno richiederebbe molto tempo e dovrebbe essere sicuramente evitato.
È possibile utilizzare l'opzione del comando find exec con il comando mv per automatizzare questo processo. Ma lascia che ti dica un modo ancora più semplice per rinominare i file in base al modello regex.
Rinomina comando in Linux
C'è un'utilità da riga di comando chiamata rename che ti permette di rinominare tutti i file che corrispondono a un certo modello nella forma regex di Perl. Il comando rename funziona solo sul nome del file, non sul file stesso.
Questo è il comando di ridenominazione della sintassi che segue:
rename [options] perlexpr [files]
Questo 'comando rinomina' ha le seguenti opzioni:
- -v :modalità dettagliata.
- -n :Nessuna azione. Mostra i file che verrebbero rinominati ma non rinominare i file.
- -o :nessuna sovrascrittura. Non sovrascrivere i file esistenti.
- -f :Forza. Sovrascrivi i file esistenti.
- -s :non rinomina il collegamento simbolico ma la sua destinazione
Si noti che il comando rename non è un'utilità standard preinstallata sulle distribuzioni Linux come il comando mv o cp. Potrebbe essere necessario installarlo. Se sei un utente sudo in Ubuntu o Debian, puoi usare questo comando per installare rename:
sudo apt install rename
Ora ti starai chiedendo come rinominare i file con il comando rename. Lascia che ti mostri due scenari pratici in cui questo comando ti farà risparmiare un sacco di tempo.
Scenario 1:sostituire un carattere con un altro in tutti i nomi di file in Linux
Immagina di avere spazi bianchi in diversi nomi di file. È un incubo gestire gli spazi nei nomi dei file in Linux. Questo è il motivo per cui nessun utente esperto nomina mai un file con spazi al suo interno.
Naturalmente, vorrai rimuovere gli spazi e sostituirli con un trattino basso (_). Il comando di ridenominazione sarà piuttosto utile qui. Vediamo come.
Per sostituire gli spazi con i trattini bassi nei nomi di tutti i file nella directory corrente, tutto ciò che devi fare è usare il comando renam in questo modo:
rename 's/ /_/g' *
Se hai una familiarità anche remota con regex, capiresti che s/ /_/g sta cercando spazio e sta sostituendo tutte le occorrenze di spazio con _.
La parte interessante è l'asterisco(*). L'asterisco ti dice di rinominare i file corrispondenti nella directory corrente.
Ma cosa succede se si desidera rinominare anche tutti i file corrispondenti nelle sottodirectory? In tal caso, puoi utilizzare due asterischi come questo:
rename 's/ /_/g' **
Scenario 2:modifica delle estensioni di più file contemporaneamente in Linux
Ecco un altro scenario per te. Hai diversi file con nomi come mio_file.xyz e vuoi rinominare questi file in modo che diventino qualcosa come mio_file.abc.
Per modificare le estensioni di più file contemporaneamente, puoi utilizzare il comando rename nel modo seguente:
rename 's/\.xyz$/.abc/' **
Lascia che ti spieghi il comando precedente.
's/\.xyz$/.abc/' :questa è un'espressione regolare che significa sostituire il carattere .xyz alla fine della riga con .abc. L'addizionale \ viene utilizzato per sfuggire a . altrimenti significherebbe abbinare qualsiasi carattere prima di xyz.
** significa cercare nella directory corrente e nelle sue sottodirectory.
Ti è piaciuto il comando rinomina?
Non molte persone sono a conoscenza del comando rename. Ciò può essere dovuto anche al fatto che rename non è un comando di fatto su molti sistemi Linux.
Tuttavia, trovo questo comando piuttosto utile quando si tratta di rinominare più file contemporaneamente.
E tu? Hai usato il comando rinomina in passato? Come preferisci rinominare più file contemporaneamente?