Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[FIND] Problème avec l'option "-exec"

13 réponses
Avatar
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

3 réponses

1 2
Avatar
Christophe Gaubert
Euh, oui, exact, l'exemple sur lequel j'avais testé était un mauvais
exemple... D'ailleurs, ça me surprenait un peu que ça fonctionne. Mais
c'est bizarre, j'ai lu ça dans l'ABS me semble-t-il. Je vais vérifier.


En fait, c'était aussi un exemple tordu de l'ABS. Exemple 10-10 sur
cette page :
http://abs.traduc.org/abs-3.5-fr/loops1.html


--
Christophe Gaubert
http://perso.wanadoo.fr/christophe.gaubert
Mail posté depuis un système libre GNU/Linux

Avatar
François RONVAUX
Christophe Gaubert wrote:

cd ~/Desktop/wav
for f in *.wav ; do lame [options] "$f" "../MP3/${f%wav}mp3" ; done


Ca marche, merci :-)


Extrait du man bash :

${parameter%word}
${parameter%%word}

The word is expanded to produce a pattern just as in pathname expansion.
If the pattern matches a trailing portion of the expanded value of
parameter, then the result of the expansion is the expanded value of
parameter with the shortest matching pattern (the ``%'' case) or the
longest matching pattern (the ``%%'' case) deleted. If parameter is @ or
*, the pattern removal operation is applied to each positional parameter
in turn, and the expansion is the resultant list. If parameter is an
array variable subscripted with @ or *, the pattern removal operation is
applied to each member of the array in turn, and the expansion is the
resultant list.


Ce que j'en comprend : on supprime la partie "word" du paramètre.
C'est bien cela ?

Avatar
Christophe Gaubert
Ce que j'en comprend : on supprime la partie "word" du paramètre.
C'est bien cela ?


Oui, avec un seul signe %, ça supprime la plus petite partie, en partant
de la fin, qui correspond à l'expression regulière "word". Avec deux %%,
ça supprime la plus longue correspondance. Dans notre cas, ça ne change
rien, vu que l'expression régulière est un simple mot "wav".

Comme d'autres l'ont fait remarquer, ça a le défaut de ne travailler que
dans le répertoire courant, et pas dans les sous-répertoires. Mais si
c'est ce que tu voulais, tant mieux :)


--
Christophe Gaubert
http://perso.wanadoo.fr/christophe.gaubert
Mail posté depuis un système libre GNU/Linux

1 2