OVH Cloud OVH Cloud

parcourir une arborescence

4 réponses
Avatar
Rakotomandimby Mihamina
Bonjour

J'ai une partie de mon Filesystem (40Go) rempli de chansons au format
mp3 et ogg .
Les mp3 sont nommés *.mp3 et les ogg *.ogg .

Il n'y a pas de caracteres exotiques ( ; > # ... ) ni de chaine suspecte
(rm -rf; dd if= ... ) dans les noms de fichiers .

Par contre il y en a qui ont des espaces.

Je voudrais convertir en ogg tout ce qui est en mp3 ( les *.mp3 )

(je sais les pertes de données et de qualité que cela occasionne, mais
je dois quand meme les convertir, cela fait partie du cahier des charges)

J'ai un scrip perl mp32ogg qui fait tres bien cette conversion, mais le
souci est qu'on ne peut pas lui dire de placer le fichier resultant
ailleurs que dans le repertoire dans lequel il est lancé .

c'est a dire que si je suis dans /tmp et que je lui dit :

mp32ogg /home/audio/toto.mp3
le fichier ogg resultant sera /tmp/toto.ogg

Je vais pas m'amuser a modifier le script perl.
Je suis sous Linux, et zsh.

J'ai la liste des fichiers a convertir :
find /home/audio -name '*.mp3' >liste.txt


Donc finalement il me faudrait un script qui fasse l'algo suivant

Soient deux fichiers a convertir (deux lignes de liste.txt) :

/premier/path/fichier1.mp3
/deuxieme/path/plus/profond/fichier2.mp3

le script doit entrer dans /premier/path
et c'est dedans qu'il lance mp32ogg .

le script entre dans /deuxieme/path/plus/profond
et c'est dedans qu'il lance mp32ogg .

Avec awk on peut definir les FS :
BEGIN {FS="/";}
on peut s'en servir pour faire
cd print $1
cd print $2
...
mais comment s'arreter a l'avant dernier field ? parceque faut pas
tenter un 'cd' sur un fichier ... ?

Ou si il y a une solution plus simple ... je suis preneur ...

Merci d'avance.
--
Rakotomandimby Mihamina Andrianifaharana
Tel : +33 2 38 76 43 65
http://www.rktmb.org/Members/mihamina

4 réponses

Avatar
mlz
Le Mon, 05 Jul 2004 11:01:08 +0200, Rakotomandimby Mihamina a écrit :

Bonjour




Ou si il y a une solution plus simple ... je suis preneur ...

Merci d'avance.



dirname 'fichier'

--
Entendu sur France Inter :
Journaliste : Vous préférez cliquer sur le mulot ou sur la souris ?
Jospin : Les deux, je cohabite !
-+- in: Guide du Cabaliste Usenet - Bien cohabiter avec son mulot -+-

Avatar
Stephane Chazelas
2004-07-05, 11:01(+02), Rakotomandimby Mihamina:
[...]
Donc finalement il me faudrait un script qui fasse l'algo suivant

Soient deux fichiers a convertir (deux lignes de liste.txt) :

/premier/path/fichier1.mp3
/deuxieme/path/plus/profond/fichier2.mp3

le script doit entrer dans /premier/path
et c'est dedans qu'il lance mp32ogg .

le script entre dans /deuxieme/path/plus/profond
et c'est dedans qu'il lance mp32ogg .
[...]


while IFS= read -ru3 mp3; do
(cd $mp3:h && mp32ogg $mp3)
done 3< liste.txt

Mais pas besoin de liste.txt avec zsh:

for f (/dir/**/*.mp3(.ND)) (cd $f:h && mp32ogg $f)

Notez aussi l'option -execdir du find de BSD.

--
Stephane

Avatar
Rakotomandimby Mihamina
Stephane Chazelas wrote:
for f (/dir/**/*.mp3(.ND)) (cd $f:h && mp32ogg $f)


comment on se renseigne sur cd .ND et le :h ?
un petit lien vers la doc zsh qui en parle ca serai cool.
en tout cas ca amrche du tonnere ...
--
Rakotomandimby Mihamina Andrianifaharana
Tel : +33 2 38 76 43 65
http://www.rktmb.org/Members/mihamina

Avatar
Stephane Chazelas
2004-07-05, 19:07(+02), Rakotomandimby Mihamina:
Stephane Chazelas wrote:
for f (/dir/**/*.mp3(.ND)) (cd $f:h && mp32ogg $f)


comment on se renseigne sur cd .ND et le :h ?
[...]


(.ND) sont des "globbing qualifiers" (criteres supplementaires
pour la generation de fichiers).
Voir
info -f zsh -n 'Filename Generation'
(à Glob qualifiers)

:h, ca vient de csh, c'est des "modifiers" qui marchent un peu
partout (dans l'history expansion, parameter expansion, glob
modifiers...), voir
info -f zsh -n Modifiers

--
Stephane