Bonjour,
Les voitures récentes ont pour certaines remplacé le bon vieux lecteur CD pour un port USB pour lire de la musique numérisée. Dans le cas de la Peugeot 208, le système embarqué semble lire (entre autres) le FLAC et l'Ogg Vorbis (apparemment pas l'Opus, mais ce n'est déjà pas si mal). Mon âme de libriste étant toute émoustillée de cette attention, voilà que je prépare des dossiers de musiques issus de ma bibliothèque en FLAC et dégaine le terminal pour les convertir en Ogg à la chaîne.
J'utilise la commande suivante pour décompresser les FLAC en WAV que je convertis de suite en OGG et suprimer les fichiers initiaux :
for f in *.flac ; do flac -d "$f" ; rm "$f" ; done && for f in *.wav ; do oggenc -q 9 "$f" ; rm "$f" ; done
(bon, c'est sans doute pas très beau et ultra-basique mais je ne suis pas un champion du shell…)
La commande est efficace mais n'agit que sur les fichiers du dossier actuel.
Voilà donc ma question : comment faire ne sorte que la commande ci-dessus aille s'exécuter dans tous les dossiers enfants du dossier actuel ?
J'imagine que c'est un truc pas bien compliqué mais je n'ai pas trouvé quoi…
Merci d'avance
HS: Le Ogg c'est bien le format audio avec pertes le plus performant (meilleur ratio qualité audio/poids) actuellement, après Opus, n'est-ce pas ?
# remplace for par find, ou couple les
Posté par NeoX . Évalué à 4.
ainsi tu demandes à find de trouver tous les fichiers .flac, et d'executer l'enchainement de commande.
par exemple :
[^] # Re: remplace for par find, ou couple les
Posté par KiKouN . Évalué à 3.
En rajoutant des && à la place des ; juste avant les rm, c'est un peu plus sécurisant. Imaginons un fichier .flac que flac n'arrive pas à décoder, dans le premier cas, il aurait été effacé sans sommation. Dans le second, il sera conservé.
# Find
Posté par max22 . Évalué à 1.
Tu pourrais utiliser la commande find, qui va aller chercher les fichiers dans les sous-dossiers, et la combiner avec xargs qui exécute une commande sur une liste de fichiers.
en principe ça devrait fonctionner avec ça (mais j'ai pas testé) :
si tu as des soucis avec des espaces dans les nom de fichiers, tu peux utiliser l'option "-print0" pour find, et "-0" pour xargs.
[^] # Re: Find
Posté par Zylabon . Évalué à 4.
xargs n'appelle pas la commande dans un shell, il faut le faire explicitement
xargs -I{} sh -c "flac -d {} && rm {}"
Pour des gros calculs comme ça, en ajoutant l'option
-P nombre_de_cœur
à xargs on parallélise gratuitement le programme.Please do not feed the trolls
# Yo
Posté par Marotte ⛧ . Évalué à 7.
Je vais peut-être dire une connerie mais n'est-ce pas possible de convertir directement les FLAC en Ogg Vorbis, sans passer par un WAV ?
[^] # Re: Yo
Posté par mrr . Évalué à 3.
Ouais, il vaut mieux utiliser
ffmpeg
ouavconv
:En général, je règle la qualité sur
7
, quand je transcode en Vorbis. La qualité maximum est10
, mais je ne crois pas que la différence soit très audible (ou alors, ça dépends du matériel ?).Envoyé depuis ma Debian avec Firefox
# SoundConverter
Posté par Anonyme . Évalué à 2.
Personnellement, j’utilise SoundConverter qui fait bien le boulot.
# Plus simplement
Posté par calandoa . Évalué à 2.
Simplement ceci devrait faire l'affaire. C'est une extension zsh, mais bash la supporte aussi depuis un moment il me semble.
for f in **/*.flac ; ...
# avec find
Posté par lolcat . Évalué à 1.
flac2ogg.sh :
flac -dc ${1} | oggenc -q -o ${1/.flac/.ogg} -
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.