Il me semble que rename est un script Perl qui utilise les regex évolués de Perl:
rename 's/\[machin\]//' truc\[machin\].txt
rename 's/\[machin\]//' truc\[*\].txt
fonctionnent chez moi
Ne pas oublier les «'» avant et après la commande de substitution, ni le «\» avant les crochets droits qui, sinon, sont un couple opérateur de regroupement de caractères.
le paquet deb ne dépend que de Perl:any (Perl étant toujours installé), je ne vois libc signalé ni dans la description du package ni dans le man qui précise bien que l’argument perlexpr est une expression Perl.
Parle-t-on vraiment de la même commande «rename» installé par le package du même nom ?
C’est ce qu’on obtient en faisant man rename.
mais il y a rename.ul et puis si tu installes le paquedt rename tu installes une interface pour File::Rename.
Sinon sans ça il y a la commande rename.ul qui vient de util-linux
Oui, si on n’a pas installé le paquet rename, script Perl. (je viens de le supprimer et man rename affiche bien alors la page de cette fonction de Libc à laquelle vous vous référez).
Conclusion: pour utiliser « rename PerlRegex fichiers», très confortable, il faut installer le package rename de Debian.
Cette commande bénéficie d’une option -n qui permet de voir, par sécurité, ce qui va être fait, sans rien modifier.
Je m’en sers presque quotidiennement depuis des années.
Il existe aussi «detox» pour supprimer les caractères bizarres et les espaces dans les noms de fichier.
L’avantage du script Perl rename est de se passer de la boucle for, puisqu’il s’applique à une liste, comme « *.mp4 », et de bénéficier du confort et de la précision des regex de Perl, par exemple éviter le syndrome des barres-obliques.
Pour ceux qui ne connaissent pas, vous pouvez essayer votre expression rationnelle PCRE (Perl Compatible Regular Expressions, comme celles utilisées par la cmd rename , grep -P ou avec le module Re de python) sur le site regex101 regex101: build, test, and debug regex .
on ne le sait souvent pas , mais avec sed on peut utiliser à peu près n’importe quel symbol à la place des / , j’utilise presque toujours #, ce qui donne par exemple sed 's#machin#truc#'