Drulac 🤔 | Zad partout utilise framapiaf.org. Vous pouvez læ suivre et interagir si vous possédez un compte quelque part dans le "fediverse". Si ce n’est pas le cas, vous pouvez en créer un ici.
Drulac 🤔 | Zad partout @Drulac

j'ai fait script bash, pour lister les .ogg, et les compresser en .mp3 cette nuit, pour pouvoir mettre toutes mes musiques dans mon MP3 avant mon départ demain matin

find . -maxdepth 4 -mindepth 1 -type f | grep ".ogg" | while read i; do
printf "${i::-3}mp3\n"
ffmpeg -y -i "${i}" -acodec libmp3lame -map_metadata 0:s:0 -ab 32000 "${i::-3}mp3"
done

le soucis c'est que les noms de fichiers sont pas bien transmis à ffmpeg, une idée 🙏 ?

· Web · 6 · 3

@Pilot ui 😕

en fait j'ai l'impression que c'est find qui me donne pas toujours le chemin complet

@Pilot oui c'est ça, une fois sur deux c'est tronqué

@Drulac Alors déjà tu peux utiliser -iname "*.ogg" dans find directement au lieu de mettre un grep derrière

Ensuite avant ton find ajoute un IFS=$'\ n' (sans l'espace), ça permet de faire en sorte que dans ta boucle bash ne coupe les arguments qu'aux retours de ligne (et pas au milieu d'une espace si y'en a dans les noms de fichiers)

Pour l'extension, pas besoin de ${i::-3}, faire un ${i%.*} est plus propre (ça retire tout ce qui suit le dernier point)

Enfin, au lieu de faire un find|while read i tu peux avec la technique du IFS=$'\ n' utiliser for i in $(find) (plus propre sémantiquement je trouve)