Il m’arrive assez souvent d’avoir un paquet de fichiers dont le nom n’est pas comme je voudrais : présence d’espace ou l’extension en majuscule.
Comme je suis assez psycho-rigide et que j’aime que mes fichiers aient tous un nom uniformisé, j’utilise souvent des logiciels permettant le mass renaming, c’est à dire que tous les noms sont modifiés en une fois.
Deux de ces logiciels ont ma préférence : Thunar, parce que c’est intégré dans le gestionnaire de fichiers et que c’est bien pratique, et Metamorphose parce qu’il est très complet (possibilité de renommer d’après les tags exifs des photos par exemple) et qu’il est disponible en paquet debian bien que non dans les dépôts (je suis une feignasse qui n’aime pas compiler des logiciels, si ce n’est en dernier recours).
Ces deux logiciels sont très bien mais comme j’utilise en ce moment un window manager dont un des buts est de se passer d’interface graphique (Xmonad, pour ne pas le nommer), je cherchais un logiciel en ligne de commande pour faire ce genre de chose.
Et là, magie ! Je viens de découvrir que la commande Perl rename est disponible toute seule dans le shell.
Du coup, à moi les expressions régulières et un résultat super rapide en ligne de commande !
Le fonctionnement est très simple. Par exemple, pour remplacer tous les espaces par des underscore dans les noms de mes fichiers .tex (ce n’est qu’un exemple : je n’ai évidemment aucun espace dans mes noms de fichiers) :
rename 's/ /_/g’ *.tex
Vous voyez, c’est tout bête : une regexp et un(e?) wildcard pour indiquer quels fichiers traiter (vous pouvez aussi donner une liste de fichiers, ou rien du tout pour entrer les noms des fichiers en mode interactif). Pour plus de détails, comme d’hab : lisez le man !
Je vous parlerai bientôt d’autres outils en ligne de commande pour en remplacer d’autres en interface graphique.