Cambiare una parte del nome a una serie di file

Vi siete mai chiesti come poter rinominare in maniera automatica una parte del nome di un file e come poter ripetere questa operazione, anche su migliaia di file, in una volta sola?
Supponiamo che vi venga chiesto di cambiare nome a una serie di un file chiamati

in

Come procedereste per farlo utilizzando un unico comando da shell?

Per prima cosa, spostate tutti i file da rinominare in una cartella apposita,
in modo da ottenere un elenco simile a questo:

che non contenga file spurii e non abbia sottocartelle.

A questo punto basta un semplice trucco di parameter substitution in bash e un ciclo for:

Nello script qui sopra, ho detto al comando for di inserire nella variabile $ciccio
tutti i nomi dei file trovati dal comando find che hanno estensione .xls.
Ora viene il bello: utilizzando la parameter substitution di bash dico al comando mv di rinominare il nome del file corrente all’interno del ciclo for, contenuto nella variabile $ciccio, in qualcosa composto da parte della variabile $ciccio, in cui però al posto di 2011-02.xls venga sostituito 2010-01.xls
Voilà!