Linux – Convertire i nomi dei file in minuscolo

Creato il 27 aprile 2011 da Blogrammazione

In situazioni in cui dobbiamo manipolare migliaia di file, ad esempio quando lavoriamo con archivi fotografici, è utile disporre di utility e script che ci semplificano non poco il lavoro. Tra tutti quelli che ho utilizzato negli ultimi mesi in ambiente Linux, uno dei più carini è senz’altro quello che vi presento con questo post.

Lo script una volta lanciato converte in minuscolo tutti i nomi dei file della directory in cui si trova lo script stesso. Vediamo le poche linee di codice che ci permettono di ottenere questo risultato:

#!/bin/sh
for x in `ls`
do
if [ ! -f $x ]; then
continue
fi
lc=`echo $x  | tr '[A-Z]' '[a-z]'`
if [ $lc != $x ]; then
mv -i $x $lc
fi
done

Come vedete lo script è molto semplice e di facile lettura: alla linea 2 eseguiamo un ciclo “for” sulla base del risultato restituito dal comando “ls” (il comando che lista il contenuto di una cartella). Per ogni file contenuto nella directory in cui abbiamo eseguito lo script stesso viene salvato temporaneamente il nome nella variabile “x”: se il nome della risorsa corrisponde effetivamente ad un file, il ciclo prosegue con le altre operazione, altrimenti si passa al file successivo (questo controllo viene fatto nelle righe 4-6).

Alla riga 7 utilizziamo il comando “tr” per convertire il nome del file in minuscolo, assegnando il nuovo nome alla variabile shell “lc”. La riga 8 verifica se il nuovo nome differisce dall’originale, e in caso affermativo quello originale viene sostituito con quello in minuscolo attraverso il comando “mv”. L’opzione “-i”   del comando “mv” permette di chiedere conferma per l’eventuale sovrascrittura di file esistenti.

Lo script l’ho trovato in questo sito, un vero e proprio punto di riferimento per gli amici del pinguino.


Potrebbero interessarti anche :

Possono interessarti anche questi articoli :