Renommer des fichiers en masse

image de dossiers

L'autre jour j'ai eu besoin de renommer rapidement un nombre important de fichiers en remplaçant un caractère par un autre.
Dans mon cas il s'agissait de supprimer le caractère souligné (_) dans un groupe de fichiers nommés "image_n.jpg" ou n était un numéro, et de remplacer ce caractère par rien, une simple suppression de caractère en somme.

Si vous n'êtes pas sur de ce que vous faites remplacez la commande mv par cp

Placez vous dans le répertoire où se trouvent vos fichiers à modifier et adaptez l'une des commandes suivantes selon vos besoins.

Supprimer un caractère avec la commande sed:

for i in *.jpg
do
    mv $i `echo $i | sed 's/_//'`
done

Le s de la commande sed signifie substitution, on comprend mieux la présence des trois barres obliques (slash) puisqu'on substitue le caractère souligné (_) par rien. Les barres obliques sont donc des délimiteurs. Ainsi si on avait souhaiter remplacer ce caractère souligné par un tiret (-) on aurait écrit:

Remplacer un caractère par un autre avec la commande sed

for i in *.jpg
do
    mv $i `echo $i | sed 's/_/-/'`
done

Supprimer un caractère avec la commande tr:

for i in *.png
    do mv $i `echo $i | tr -d _`
done

Remplacer un caractère par un autre avec la commande tr

for i in *.png
    do mv $i `echo $i | tr _ s`
done

Libre à vous d'utiliser ces commandes dans un script bash ou directement dans le shell avec la console.

24-Aug-2021
^