Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/08/2009, à 17:48

elema

[bash] "copier" selon une commande

Voilà, je voudrais savoir si il est facilement possible de réaliser ceci :
Il s'agirait de faire un genre de 'super-cp -R src dest', mais au lieu de copier les fichiers, le "super-cp" appelerait simplement une commande de mon choix en lui passant le chemin du fichier original, ainsi que le chemin où il serait normalement copié, ce qui me permettrait non seulement de copier mais aussi de modifier les fichiers.
Exemple, j'ai une arborescence de fichiers flac, je veux copier cette même arborescence quelque part, mais en encodant tous les fichiers en ogg.
Ca ferait :

super-cp -R --command <cmd-encodage> /mes/fichiers/flac /mes/fichiers/ogg

C'est bien réalisable avec un find, mais je voulais savoir si il y avait moyen de faire ça plus simplement, car ça m'étonnerait beaucoup que je sois le premier à vouloir faire un truc de ce genre...

Dernière modification par elema (Le 28/08/2009, à 17:50)

Hors ligne

#2 Le 28/08/2009, à 20:27

tiky

Re : [bash] "copier" selon une commande

C'est très simple à faire avec la commande find; je ne vois pas pourquoi créer une commande supplémentaire pour un besoin aussi spécifique. Si une telle commande existe, elle n'est pas installée par défaut sur le système en tout cas.

Tu peux essayer en combinant find et xargs.

find . -name '*.flac' | xargs -I file command1 file | xargs -I file command2 file | ...

Dernière modification par tiky (Le 28/08/2009, à 20:42)


Conseil d'expert: il vous faut un dentifrice adapté...

Hors ligne

#3 Le 28/08/2009, à 21:50

elema

Re : [bash] "copier" selon une commande

C'est loin d'être si simple.
Comment je fais pour obtenir le chemin où mon fichier doit être copié ?
De plus, je devrais m'assurer A CHAQUE fois que le dossier dans lequel doit être copié le fichier existe, et sinon le créer.

Hors ligne

#4 Le 28/08/2009, à 22:12

wido

Re : [bash] "copier" selon une commande

Pourquoi tu ne passes pas par ffmpeg

copie ton arborescence .flac vers .ogg

tu sélectionnes toutes tes musiques ,clic droit et encodage
un peu dans ce style:
http://files.myopera.com/widowild/files/ffmpeg_psp

les commandes ffmpeg sont à modifier

Hors ligne

#5 Le 28/08/2009, à 22:43

elema

Re : [bash] "copier" selon une commande

Désolé, mais je cherchais une commande shell, question de généricité/réutilisabilité
J'ai réussi à faire quelque chose à coups de find et boucles.

Hors ligne

#6 Le 28/08/2009, à 23:30

tiky

Re : [bash] "copier" selon une commande

elema a écrit :

C'est loin d'être si simple.
Comment je fais pour obtenir le chemin où mon fichier doit être copié ?
De plus, je devrais m'assurer A CHAQUE fois que le dossier dans lequel doit être copié le fichier existe, et sinon le créer.

Un petit coup de basename pour retirer la mauvaise extension.


Conseil d'expert: il vous faut un dentifrice adapté...

Hors ligne

#7 Le 27/03/2013, à 15:53

DrEmixam

Re : [bash] "copier" selon une commande

C'est un gros remontage, mais quand quelqu'un dit

elema a écrit :

J'ai réussi à faire quelque chose…

il devrait toujours donner la solution.

Hors ligne

#8 Le 27/03/2013, à 21:22

Haleth

Re : [bash] "copier" selon une commande

Bah, faut pas chercher midi à 14H.

#Make a tree
find -type d -exec mkdir -p ../RESULT/{} \;

#Convert & copy files
find -type f -exec bash -c 'f=$(basename {}); d=$(sed "s|^\./||" <<<$(dirname {})); ffmpeg -i {} ../RESULT/$d/$f.ogg' \;

#If you wanna rename ..
shopt -s globstar
rename 's/.flac.ogg$/.ogg/' **

Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne