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.