(Courriels de diversion: <gargouillements@aviserait-mesestimee.com> <recachettes@usurperas-nabot.com> <affreter@nicherai-spolierais.com> <assignerions@sablier-surexcitant.com> <rassoyant@mobiliserai-espacerons.com> <croquee@dedommagees-boutonnerez.com> <decante@desertaient-grippent.com> <devront@enclume-reconcilierez.com> <inserent@gares-egrenerais.com> <infiltree@inattentive-falsification.com> )
Le samedi 14 octobre 2006 à 12:22, jdd a écrit: > Bonjour, > > C'est une question pour ceux qui connaissent bash... > > Dans un script, je veux traiter des fichiers obtenus grace > à "script *". En pratique, ici, il s'agit de traiter des > fichiers wav avec lame pour les convertir en mp3. Lame ne > comprends pas les expressions régulières. Il est probable > que des versions élaborées de ce script existent déjà, ce > n'est pas la question, j'ai parfois à faire des choses de > ce genre et j'aimerais savoir les faire moi-même > > le script de base est celui-ci: > > #!/bin/sh > for I ; do > lame -h -v $1 $1.mp3 > shift > done ; > > si j'exécute wav2mp3 (c'est son nom) comme ceci: wav2mp3 > *.wav, il me renvoie fichier1.wav.mp3, fichier2.wav.mp3, > ce qui est normal > > j'ai donc besoin de connaitre l'instruction bash qui me > donnera le nom du fichier sans l'extension pour l'utiliser > à la place de la deuxième occurence de $1 dans le > script... Je crois que c'est ça que tu cherches: lame -h -v $1 ${1%.*}.mp3 ${1%.*} retire tout ce qui est a droite du dernier point (point inclus) ${1%%.*} retire tout ce qui est a droite du premier point (point inclus) ${1#*.} retire tout ce qui est a gauche du premier point (point inclus) ${1##*.} retire tout ce qui est a gauche du dernier point (point inclus) Exemple: sebastien@polaris:~ ]TOTO=TITI.TOTO.TUTUsebastien@polaris:~ ]echo ${TOTO%.*}TITI.TOTO sebastien@polaris:~ ]echo ${TOTO%%.*}TITI sebastien@polaris:~ ]echo ${TOTO#*.}TOTO.TUTU sebastien@polaris:~ ]echo ${TOTO##*.}TUTU Tu peux aussi faire des substitions: ${1/.wav/.mp3} pour remplacer la premiere chaine .wav par .mp3 (attention si il y a .wav dans le nom même du fichier...) ${1//.wav/mp3} remplace tous les .wav par .mp3 > merci > jdd -- @+, Sébastien aka. MichouX "L'énergie usée à atteindre des normes de qualité est inversement proportionelle au temps restant avant le prochain audit.", Olivier Sax -------------------------------------------------------------------- Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>