64 votes

Nom de fichier sans extension dans bash for loop

Dans une boucle for comme celle-ci :

 for f in `ls *.avi`; do echo $f; ffmpeg -i $f $f.mp3; done

$f sera le nom complet du fichier, y compris l'extension. Par exemple, pour song1.avi, la sortie de la commande sera song1.avi.mp3. Existe-t-il un moyen d'obtenir uniquement song1, sans le .avi de la boucle for ?

J'imagine qu'il existe des moyens de le faire en utilisant awk ou d'autres outils similaires, mais j'espère qu'il y a quelque chose de plus simple.

Merci

20voto

spsuaiken Points 61

Cela devrait le faire :

 for i in *.m4a; do
  ffmpeg -i $i ${i%%.*}.mp3
done

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X