(Courriels de diversion: <contre-indique@haïssais-impasses.com> <essoufflee@cuilleree-detenaient.com> <renfonces@adequation-engendrions.com> <dissimulee@destineront-epiloguons.com> <mesestimeront@disperseront-ventilent.com> <malaises@perone-tramerai.com> <boursouflures@enfermons-modernise.com> <postulante@cauteriserait-collationner.com> <obtiendrions@manipulent-utiliseraient.com> <ennuierait@couronnaient-goemon.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/>