Renommer des fichiers contenant [ ] dans le nom

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 man n’est pas très explicite sur le sujet avec tout de même le fait qu’il soit lié à glibc.

https://manpages.debian.org/bookworm/rename/file-rename.1p.en.html

je voudrais bien un sondage pour savoir qui a un OS sans Perl installé :wink:
sinon le paquet une fois installé pèse 61,0 ko, terrifiant

1 J'aime

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.

1 J'aime

le x dans le code est bien le x de for x in *mp4 ?

C’est le nom de la variable. Exemple de substitution simple où l’on change ‹ X › en ‹ e › :

fab@fabien:~$ variable="azXrty"
fab@fabien:~$ echo "${variable/X/e}"
azerty
fab@fabien:~$
1 J'aime

c’est bien ça , merci.

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.

https://perldoc.perl.org/perlfaq6

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#'

1 J'aime