Rinominare più file

Comandi principali

Rinominare un elevato numero di files potrebbe essere un’operazione lunga e noiosa se effettuata con il normale file manager grafico. In alcuni casi è possibile servirsi del terminale creando un piccolo script in grado di effettuare l’operazione ciclicamente su tutti i files.
Supponiamo di avere la seguente lista di files alla quale si vuole aggiungere un suffisso.

max@silvermoon:~/foto$ ls
george.jpg john.jpg paul.jpg ringo.jpg

Per rinominarli è possibile utilizzare questa serie concatenata di comandi. Il punto e virgola può essere sostituito con un invio, Il ciclo verrà eseguito solo successivamente al comando done.

$ for i in `ls *.jpg`; do mv $i beatles_$i;done

Il risultato del comando è il seguente:

maxo@silvermoon:~/foto$ ls
beatles_george.jpg beatles_john.jpg beatles_paul.jpg beatles_ringo.jpg

Il ciclo descritto sopra può essere particolarmente pericoloso poichè un eventuale errore potrebbe riperquotersi su tutti i files selezionati dal comando ls. Per questo motivo è una buona abitudine, prima di lanciare il comando in esecunzione, lanciarlo in stampa servendosi del comando echo. Il comando visto in precedenza sarà il seguente:

$ for i in `ls *.jpg`; do echo mv $i beatles_$i;done

e produrrà questo output:

mv george.jpg beatles_george.jpg
mv john.jpg beatles_john.jpg
mv paul.jpg beatles_paul.jpg
mv ringo.jpg beatles_ringo.jpg

Rinominare più file da minuscolo a maiuscolo e viceversa

per rinominare i file da minuscolo a maiuscolo spostarsi nella cartella contente i file da rinominare e lanciare questo comando:

for i in *; do mv $i $(echo $i | tr [:lower:] [:upper:]); done

per rinominare i file da maiuscolo a minuscolo spostarsi nella cartella contente i file da rinominare e lanciare questo comando:

for i in *; do mv $i $(echo $i | tr [:upper:] [:lower:]); done

Cambiare l’estensione

E’ possibile cambiare l’estensione ad un file inviado l’output del comando al tool sed. Supponiamo di voler cambiare l’estensione dei file seguenti da .jpg a .jpeg.

ls
1.jpg 2.jpg 3.jpg 4.jpg

Ecco come utilizzare sed per cambiare l’estensione:

for i in `ls`; do mv $i `echo $i | sed s/jpg/jpeg/g`;done

Il risultato sarà il seguente:

ls
1.jpeg 2.jpeg 3.jpeg 4.jpeg

Rinominare in modo veloce

Se vogliamo rinominare tutti i files contenuti all’interno di una cartella (ad esempio per sostituire uno spazio con un trattino basso) è possibile usare il seguente comando.

ls -1 | rename s/\ /_/g

nota: per far sì che il comando accetti lo spazio come carattere standard è necessario anteporre il carattere “\”. Se avessimo voluto sostituire un “.” con un “_” bastava scrivere “s/./_/g”

4 thoughts on “Rinominare più file

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...