Probleme commande

Fermé
jacinthe87 Messages postés 194 Date d'inscription mercredi 4 février 2009 Statut Membre Dernière intervention 15 juillet 2010 - 16 avril 2009 à 21:45
mamiemando Messages postés 33459 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 janvier 2025 - 17 avril 2009 à 01:40
Bonjour,

dans un exercice, il est demandé de changer l'extension du .htm en .html
la solution que j'ai trouvé est:
#!/bin/sh
for i in $@;
do
mv $i `echo $i | sed -e "s/htm$/html/"`  
done;


j'ai pas compris le sed -e, qu'est ce que cela signifie, est ce qu'il y a une autre solution à cet exercice.
Voila ce que j'ai fait:
mv $i ${i}l

mais le probleme c'est que à chaque fois j'execute la commende une 'l' s'ajoute à la fin.
merci
A voir également:

1 réponse

mamiemando Messages postés 33459 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 janvier 2025 7 813
17 avril 2009 à 01:40
Pour comprendre sed, tape dans une console :
man sed

Sed est un outil puissant mais là il est disproportionné par rapport à ce que tu veux faire. Ta seconde approche est donc plus proche de ce qu'il faut chercher à faire. En fait le seul problème c'est que tu appliques ton mv à tous les fichiers (et pas seulement aux fichiers terminant par .html)

Il suffit donc de faire un truc du genre
for x in `ls *html`; do mv $x ${x}l; done

Cette solution n'est pas parfaite car en toute rigueur il faudrait s'assurer que x n'est pas un répertoire (chose que tu peux vérifier avec un if[ -d ... ]. Bref tu touches au but ;-)
http://www.linuxconfig.org/Bash_scripting_Tutorialdirect

Bonne chance
0