[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [linux-team] Iteration d'une commande
> Une bonne solution est une boucle en bash. Tu dois donc créer un fichier
> script bash...
> Et tu utilise la structure suivante :
> #!/bin/bash
> for i in $(ls *.mp3); do
> mpg123 -b 10000 -s $i | sox -t raw -r 44100 -s -w -c2 - audio_01.wav
> done
Oui mais l'idée, c'était un itérateur ;)
Et puis le nom du wav est tjs le même, dans ton script...
Ca devient vicieux, pour déterminer le nom du wav, à moins de simplement remplacer
le .mp3 à la fin par .wav:
#!/bin/bash
for i in $(ls *.mp3); do
wav="${i%%.mp3}.wav"
mpg123 -b 10000 -s "$i" | sox -t raw -r 44100 -s -w -c2 - "$wav"
done
Note qu'il est également préférable de mettre $i et $wav entre ", vu que sinon
ça ne marchera pas pour des fichiers dont le nom comprend des espaces " "
(mpg123 et sox percevront ça comme 2 arguments distincts sinon).
Le ${i%%.mp3}, c'est encore un builtin bash qui retire la chaîne ".mp3" de la
*fin* de la variable $i. Pour retirer au début, il y a ${i##.mp3}, mais c'est
pas ce qu'on veut ici ;)
cf. man bash et cherchez après ##
-o) Pascal Bleser | UNIX *is* user friendly.
/\\ C++/UNIX Development | It's just selective about
_\_v ATOS Payment Systems | who its friends are...
pbleser@atos-group.com---------------------------------
---------
This message was sent by Majordomo 1.94.3. Please report problems to
manu@rtfm.be. If you want to be deleted from the list, send a mail to
majordomo@rtfm.be with "unsubscribe linux-team" in the body.