GNT sans publicité, site mobile, fonctionnalitées exclusives...

[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
Lire les 13 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #617655
François RONVAUX wrote in message
$find "~/Desktop/wav" -type f -iregex '.*.wav' -exec lame [options] '{}' ;


-name '*.wav' est plus standard.

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 ?


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

Enfin, comment envoyer le résultat dans le répertoire "~/Desktop/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 ?
:-Þ

François RONVAUX
Le #617652
Nicolas George wrote:

-name '*.wav' est plus standard.


Ca marche.


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 :


Marche pas :

$zsh
bash: zsh: commad not found

Il semblerait que je dispose seulement de bash.


cd ~/Desktop/wav
for i in **/*.wav(.)
lame ... $i ${i:r}.mp3


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".


Sinon, tu as une bonne raison de vouloir faire du MP3 plutôt que du Vorbis ?


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.

Nicolas George
Le #617651
François RONVAUX wrote in message
$zsh
bash: zsh: commad not found

Il semblerait que je dispose seulement de bash.


Toutes mes condoléances.

bash: syntax error near unexpected token '('
<snip>

Les fichiers sont encodés mais les filenames restent en ".wav.mp3".


**, (.) 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.

Christophe Gaubert
Le #617650
$cd ~/Desktop/wav
$for i in **/*.wav(.) ; do lame ... $i ${i:r}.mp3 ; done
bash: syntax error near unexpected token '('


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

drkm
Le #617649
Christophe Gaubert writes:


for i in **/*.wav(.) ; do ...


En bash :

for f in *.wav ; do ...


Et pour les fichiers se trouvant dans des sous-répertoires ?

--drkm


Publicité
Suivre les réponses
Poster une réponse
Anonyme