Pages : 1
#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
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
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