[Linux] script bash

Jonathan ROTH jonathan@::1
Mer 7 Nov 19:16:05 CET 2007


Serge Schmitt a écrit :
> Salut !
>
> Je me sers avec bonheur de ce script :
> (je sais... mais on m'a offert un iPod mini il y a un an !)
>
> for i in *.ogg; do ogg123 -d wav -f - "$i" | lame -b 160 -h - 
>> "$i".mp3; done
>
> Ce script présente le défaut suivant :
>
> truc.ogg est réencodé/nommé truc.ogg.mp3 !
>
> Est-il possible de modifier ce script pour supprimer le ".ogg." du mp3 ?
>
> Cela nécessite en l'état un renommage un peu fastidieux (je ne transfère 
> pas tous mes albums en une fois), et je ne sais pas comment chercher 
> une telle solution...
>
> Merci pour les pistes.

J'ai une deuxième proposition, que j'avais trouvée parce que mes boucles 
'for' avaient des comportements douteux avec divers caractères, espaces 
en particulier: (-maxdepth permet de ne pas descendre dans l'arborescence)

find [-maxdepth 1] -name *.ogg | ( while read source; do ogg123 -d wav 
-f - "$source" | lame -b 160 -h - > "$(basename "$source" .ogg).mp3"; done )

PS: le tout en une ligne, et ce sont bien des parenthèses et non des 
accolades.


Plus d'informations sur la liste de diffusion linux