[FIND] Problème avec l'option "-exec"
Le
François RONVAUX
Bonjour à tous.
Sous Knoppix v4.0 LiveDVD, j'ai un répertoire "~/Desktop/wav".
Je souhaite trouver dans ce répertoire tous les fichiers ".wav" et les
convertir en MP3 avec l'encodeur LAME. Je fais donc :
$find "~/Desktop/wav" -type f -iregex '.*\.wav' -exec lame [options] '{}' \;
Le souci est que les fichiers produits sont nommés "filename.wav.mp3" et
je préfèrerais évidemment qu'ils soient directement de la forme
"filename.mp3".
Comment faire ?
Enfin, comment envoyer le résultat dans le répertoire "~/Desktop/MP3" ?
Merci d'avance pour vos réponses.
--
Pour une réponse privée, remplacer dans l'adresse e-mail le underscore
par un point
Sous Knoppix v4.0 LiveDVD, j'ai un répertoire "~/Desktop/wav".
Je souhaite trouver dans ce répertoire tous les fichiers ".wav" et les
convertir en MP3 avec l'encodeur LAME. Je fais donc :
$find "~/Desktop/wav" -type f -iregex '.*\.wav' -exec lame [options] '{}' \;
Le souci est que les fichiers produits sont nommés "filename.wav.mp3" et
je préfèrerais évidemment qu'ils soient directement de la forme
"filename.mp3".
Comment faire ?
Enfin, comment envoyer le résultat dans le répertoire "~/Desktop/MP3" ?
Merci d'avance pour vos réponses.
--
Pour une réponse privée, remplacer dans l'adresse e-mail le underscore
par un point

Poser une question


-name '*.wav' est plus standard.
Directement dans find, rien à faire. L'idée de base serait de remplacer
l'appel à lame par un appel à un script qui calcule le bon nom de fichier
destination. Pour ma part, je ferais ça avec zsh plutôt que find :
cd ~/Desktop/wav
for i in **/*.wav(.)
lame ... $i ${i:r}.mp3
Avec ma version, il suffit de mettre « ../MP3/ » devant « ${i:r}.mp3 » :
c'est pour ça que j'ai fait un cd au début plutôt que de mettre
~/Desktop/wav dans le motif cherché.
Sinon, tu as une bonne raison de vouloir faire du MP3 plutôt que du Vorbis ?
:-Þ
Ca marche.
Marche pas :
$zsh
bash: zsh: commad not found
Il semblerait que je dispose seulement de bash.
Marche pas :
$cd ~/Desktop/wav
$for i in **/*.wav(.) ; do lame ... $i ${i:r}.mp3 ; done
bash: syntax error near unexpected token '('
Si je fais :
$cd ~/Desktop/wav
$for i in *.wav ; do lame [options] $i ${i:r}.mp3 ; done
Les fichiers sont encodés mais les filenames restent en ".wav.mp3".
Support universel.
Vu la capacité des baladeurs MP3, je peux me permettre des morceaux
encodés au bitrate maximal (320 kb/s) pour atteindre une qualité
équivalente au Vorbis.
Toutes mes condoléances.
**, (.) et ${...:r} sont des constructions spécifiques à zsh. Il est plus ou
moins possible de construire des équivalents en bash, mais ça risque d'être
fastidieux.
En bash :
cd ~/Desktop/wav
for f in *.wav ; do lame [options] "$f" "../MP3/${f%wav}mp3" ; done
(Les guillemets au cas où tes fichiers contiennent des espaces)
--
Christophe Gaubert
http://perso.wanadoo.fr/christophe.gaubert
Mail posté depuis un système libre GNU/Linux
Et pour les fichiers se trouvant dans des sous-répertoires ?
--drkm