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…