Renommer un ensemble de fichiers

Posted on December 2, 2012

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
Tags: rename