Massivement renommer des fichiers

dimanche 12 juillet 2020 par SocraticDev

L'outil en ligne de commande (CLI) mmv déplace (ou copie, ajoute ou lie, selon la commande spécifiée) chaque fichier source correspondant à un modèle From au nom cible spécifié par le modèle To. Cette action multiple est effectuée en toute sécurité, c'est-à-dire sans aucune suppression inattendue de fichiers en raison de collisions de noms cibles avec des noms de fichiers existants ou avec d'autres noms cibles. De plus, avant de faire quoi que ce soit, mmv tente de détecter toute erreur qui résulterait de l'ensemble des actions spécifiées et donne à l'utilisateur le choix de poursuivre en évitant les parties incriminées ou en abandonnant.

Cas d'utilisations : renommer des dizaines de fichiers manuellement est long et inhumain

Ce n'est pas à tous les jours qu'on ressent le besoin de renommer massivement des fichiers. Toutefois, dans un processus de développement rapide, standardiser le nom des fichiers générés n'est pas prioritaire. Par exemple, dans le cadre de mon projet actuel, j'ai développé un script léger pour télécharger et horodater des pages web de façon quotidienne : https://github.com/socraticDevBlog/webpage-grabber. En cours de développement, j'ai amélioré la syntaxe des noms de fichier. Par le fait même, le nom des fichiers téléchargés au début du projet diffère des plus récents.

La seconde phase du projet sera de gratter (web scraping) le contenu des page web téléchargées pour en extraire le contenu et l'insérer dans une base de données. Pour que l'application de web scraping soit en mesure de s'abreuver dans un répertoire donné, il est nécessaire que le nom des fichiers y soient normalisés. En effet, comme le processus de traitement des données acquises sera automatisé, tous les fichiers doivent être nommés de façon consistante.

Au départ, je me disais qu'il n'y aurait pas de problème pour renommer ces fichiers. Je me proposais d'utiliser les commandes natives de linux comme mv et grep. Toutefois, ces commandes s'appliquent sur un fichier à la fois (à moins de scripter des boucles en bash ou perl). En cherchant un peu, j'ai trouvé l'outil mmv et en suivant les instructions, j'ai rapidemment standardiser tous mes fichiers à traiter.

# apt-get install mmv

$ man mmv

La première commande install mmv sur votre serveur (Debian et certaines autres distros). La seconde affiche le manuel d'instruction de l'outil.

Bon succès !

Sources

mmv (1) - Linux Man Pages