# [rename]Les regex ne fonctionnent pas s/truc/machin/(Résolu)

## Napoleon

Bonjour,

Je cherche à utiliser la commande rename pour modifier une chaine de caractère présente dans plusieurs fichiers et je me suis rendu compte que la syntaxe « rename s/truc/machin/ FICHIER » ne marche tout bonnement pas.

En outre, j’ai deux atomes portant le nom de « rename » que sont « dev-perl/rename » et « sys-apps/rename ».

Dans tous les cas where rename renvoi : /usr/bin/rename.

Je tiens à préciser que la syntaxe du type « rename substitué substituant fichier… » fonctionne parfaitement, le problème ne semble se situé qu’avec les regex.

Auriez-vous s’il vous plait une idée sur ce genre de dysfonctionnement ? De mon coté je ne trouve rien de spécial sur les moteurs de recherches :/

Merci par anticipation,

À bientôt.

----------

## guilc

Parce que la version avec regexp (celle qu'on trouve sous le nom "rename" sur ubuntu) est dev-perl/rename.

La version "de base", celle installée anciennement par sys-apps/rename et maintenant directement par util-linux (connue sous ubuntu sous le nom "rename.ul"), ne gère pas les regexp. Tout simplement  :Wink: 

Ce sont bien 2 outils différents. Si tu veux les regexp, installes dev-perl/rename, et tu auras la commande "perl-rename" qui correspond exactement au "rename" de ubuntu. Mais aucun dysfonctionnement ici, que du normal !

----------

## Napoleon

 *guilc wrote:*   

> Parce que la version avec regexp (celle qu'on trouve sous le nom "rename" sur ubuntu) est dev-perl/rename.
> 
> La version "de base", celle installée anciennement par sys-apps/rename et maintenant directement par util-linux (connue sous ubuntu sous le nom "rename.ul"), ne gère pas les regexp. Tout simplement ;)

 Ah, fallait le savoir. C’est vrais qu’en cherchant plus profondément je vis que le nom changeait d’une distrib’ à l’autre.

 *guilc wrote:*   

> Ce sont bien 2 outils différents. Si tu veux les regexp, installes dev-perl/rename, et tu auras la commande "perl-rename" qui correspond exactement au "rename" de ubuntu. Mais aucun dysfonctionnement ici, que du normal !

 Ah, merci tu me sauve ! anéfay çamarche© désormais.

Mais… une question se pause : Comment faire en sorte que ça puisse étre portable dans un script ? l’évitée complètement ?

Merci encore.

----------

## guilc

Commande pas portable => script pas portable :p

Dans l'absolu, si tu veux rester portable, il faut en rester aux commande POSIX (un subset de coreutils) avec leurs options POSIX (les coreutils linux ajoutent des options spécifiques en plus des options standard POSIX)

Mais sinon, le moyen le plus simple reste de faire à minima une variable contenant le nom de la commande à appeler, et plus joli, un petit fichier de conf  :Wink:  C'est comme ça que c'est traditionnellement fait.

Tu déploies le script sur une machine => tu configures la variable, et hop, c'est réglé.

----------

## Napoleon

Merci guilc pour les précisions :)

----------

