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…