Une commande pratique pour renommer un ensemble de fichiers : rename.
Par exemple, pour remplacer tous les espaces par des underscores sur les fichiers .truc :
rename 's/ /_/g' *.truc
Si vous voulez vous rassurer, vous pouvez prendre un fer à cheval vérifier au préalable quels changements vont être faits en ajoutant l’option -n (les changements ne seront alors pas effectués) :
rename -n 's/ /_/g' *.truc
Et comment faire si on veut également appliquer le changement dans les sous-dossiers (et les sous-sous-dossiers ;) ) ? Voilà un exemple de script que vous pouvez utiliser (dans cet exemple, on cherche à remplacer les espaces par des underscores dans les fichiers .odt ou .ods) :
#!/bin/bash
rep=$(pwd)
IFS=$'\n'
for i in $(find . -name "*.odt" -or -name "*.ods")
do
dirname=`dirname ${i}`
basename=`basename "${i}"`
cd ${dirname}
rename 's/ /_/g' ${basename}
cd ${rep}
done