Renommer des fichiers par lots avec zmv

- Unix

Changer l’extension d’un ensemble de fichier a toujours été une galère. Il existe certes des solutions, soit on utilise une application graphique, soit on le fait à la main, soit on fait un script shell. J’était plutôt un partisan de la solution manuelle, au moins je suis sur de ce que je fais.

La fonction standard zmv de zsh offre un moyen simple et rapide de renommer des fichiers par lots. Seulement cette function n’est pas chargée par défaut, il faut la charger :

$> autoload -U zmv

Vu comme j’ai trouvé zmv pratique je l’ai directement ajouté dans la conf de mes dotfiles si vous pensez l’utiliser, je vous recommanderai de faire la même chose. Voici quelques exemples de la puissance de zmv pour manipuler les noms de ficheirs…

Changer l’extension de fichiers

$> zmv '(*).html' '$1.md'

La commande précédente renomme les fichiers, si vous voulez faire un “essai”, c’est à dire vérifier les modifications qui seront apportées à vos fichiers avant que les modifications ne soient réellement faites, vous pouvez ajouter l’argument -n.

Changer l’extension de fichiers récursivement

$> zmv '(**/)(*).html' '$1$2.md'

Cette commande changera récursivement tous les fichiers html par des fichiers md à partir de votre répertoire courant pour tous les répertoires enfants.

Changer la casse des fichiers

$> zmv '(*)' '${(L)1}'

Cette commande permet de renommer les fichiers en minuscules.

$> zmv '(*)' '${(U)1}'

Cette commande permet de renommer les fichiers en majuscules.

$> zmv '(*)' '${(C)1}'

Cette commande permet de renommer les fichiers en mettant la première lettre de chaque mot en majuscule.

ATTENTION : ces commandes fonctionnent uniquement sur un OS sensible à la casse !

Renommer un fichier selon une expression régulière

$> zmv '(*).txt' '${1//foo/bar}.txt'

Dans l’exemple si dessus, on remplace “foo” par “bar” dans tous les fichiers txt.

Renommer des fichiers et ajouter un compteur

$> c=1 zmv '(*).jpg' '$1-$((c++)).jpg'

Besoin d’ajouter un compteur à des images ? Pas de soucis avec zmv, la commande précédente va tout simplement ajouter un suffix avec un compteur au nom des fichiers.

Conclusion

Voilà, zmv est vraiment très pratique pour renommer des fichiers par lots. Je n’ai plus peur quand je reçois des archives de photos faites avec différents appareils photos (car chaque appareil nomme les fichiers selon sa converntion). Avec zmv, c’est une question de secondes pour avoir toutes mes images renommées selon ma convention.

Un excellent outil à avoir pour renommer ses fichiers et si vous voulez d’autres exemple