Le renom­mage de masse en console

Il m’ar­rive assez souvent d’avoir un paquet de fichiers dont le nom n’est pas comme je voudrais : présence d’es­pace ou l’ex­ten­sion en majus­cule.

Comme je suis assez psycho-rigide et que j’aime que mes fichiers aient tous un nom unifor­misé, j’uti­lise souvent des logi­ciels permet­tant le mass rena­ming, c’est à dire que tous les noms sont modi­fiés en une fois.

Deux de ces logi­ciels ont ma préfé­rence : Thunar, parce que c’est inté­gré dans le gestion­naire de fichiers et que c’est bien pratique, et Meta­mor­phose parce qu’il est très complet (possi­bi­lité de renom­mer d’après les tags exifs des photos par exemple) et qu’il est dispo­nible en paquet debian bien que non dans les dépôts (je suis une feignasse qui n’aime pas compi­ler des logi­ciels, si ce n’est en dernier recours).

Ces deux logi­ciels sont très bien mais comme j’uti­lise en ce moment un window mana­ger dont un des buts est de se passer d’in­ter­face graphique (Xmonad, pour ne pas le nommer), je cher­chais un logi­ciel en ligne de commande pour faire ce genre de chose.

Et là, magie ! Je viens de décou­vrir que la commande Perl rename est dispo­nible toute seule dans le shell.

Du coup, à moi les expres­sions régu­lières et un résul­tat super rapide en ligne de commande !

Le fonc­tion­ne­ment est très simple. Par exemple, pour rempla­cer tous les espaces par des unders­core dans les noms de mes fichiers .tex (ce n’est qu’un exemple : je n’ai évidem­ment aucun espace dans mes noms de fichiers) :

rename ‘s/ /_/g’ *.tex

Vous voyez, c’est tout bête : une regexp et un(e?) wild­card pour indiquer quels fichiers trai­ter (vous pouvez aussi donner une liste de fichiers, ou rien du tout pour entrer les noms des fichiers en mode inter­ac­tif). Pour plus de détails, comme d’hab : lisez le man !

Je vous parle­rai bien­tôt d’autres outils en ligne de commande pour en rempla­cer d’autres en inter­face graphique.

Me soutenir sur Tipeee Me soutenir sur Liberapay

3 réflexions au sujet de « Le renom­mage de masse en console »

  1. Pratique en effet, je ne connaissais pas (j’en suis resté au for).

    J’ai une énigme : comment virer automatiquement des caractères qui ne sont pas reconnus par le shell ? En effet, il arrive que des fichiers qui viennent d’autres systèmes (et d’utilisateurs peu avertis des conventions de nommages), présentent des caractères qui sont affichés sous forme de points d’interrogation par le bash, tant il ne sait pas les interpréter. Evidemment, impossible de se contenter de faire remplacer les points d’interrogation (puisque ça ne marche pas), et curieusement des régles du genre ^[:alnum:] (<= ceci n’est pas un lien) ne fonctionnent pas. Pour ma part je n’ai tenté qu’avec du sed, et je n’ai jms réussi.

  2. A la poubelle bash, rename arrive parfaitement à reconnaitre que ces caractères foireux ne sont pas des caractères alpha numériques. Tu m’as résolu un pb qui me saoûle une fois par mois, merci.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *