[RESOLU]Renommage de masse

Est il possible de renommer tous fichiers d’un dossier ayant l’extension .chm.html en .chm ?

ls .chm.html | sed -e '1,$s/^(.).html$/mv \1.html \1/’ | sh

Merci, serait il possible d’avoir une explication car j’aime bien savoir ce que je fais.

[quote=“fran.b”]ls .chm.html [/quote]Liste tous les fichier d’extension .chm.html[quote]| sed -e '1,$s/^(.).html$/[/quote]Applique le motif “^[chaine 1].html$”, avec ça \1 = fichier.chm[quote]mv \1.html \1/’ | sh[/quote] transforme donc le nom du fichier en

mv nom_du_fichier.mv.html nom_du_fichier.mv

le | sh exécutant les commandes. Essaye sans | sh, tu verras…

Ok, merci mais ça ne marche pas toujours :

:/donnees/books/Linux$ ls *.chm.html | sed -e '1,$s/^\(.*\).html$/mv \1.html \1/' | sh sh: line 1: syntax error near unexpected token `(' sh: line 1: `mv Advanced Programming In The UNIX Environment, 2nd Edition (2005).chm.html Advanced Programming In The UNIX Environment, 2nd Edition (2005).chm'

Arg tu as des noms de fichiers à la noix, il faut mettre des «"»:

ls .chm.html | sed -e '1,$s/^(.).html$/mv “\1.html” “\1”/’ | sh

devrait marcher…

Merci, ça fonctionne, il faudra quand même qu’un de ces jours je m’achète un bon bouquin sur le shell.

Il y a aussi la commande rename.

rename 's/htm/html/' *.htm rename 's/chm/html/' *.chm

Elle ne prend pas les regex, mais les perlexp…