Bonjour,
je butte sur un problème qui semble bête mais que je n'arrive pas à contourner : pour lutter contre la corruption lente de mes vidéos & co (certaines deviennent violettes par moment), j'ai décidé de créer des fichiers par2 pour chacun des fichiers à protéger.
En bref, je balaye récursivement un répertoire avec find, j'utilise parallel pour accélérer le tout et j'appelle ainsi par2create.
Le problème, c'est que j'aimerais que les fichiers .par2 soient cachés, et j'aimerais le faire sans deuxième find. Donc je pense à ca :
find `pwd` -type f | parallel --progress -j 3 par2create -qq -r5 -n1 -- '`dirname '{}'`/.'{/}'.par2' '{}'
#devrait exécuter : par2create -qq -r5 -n1 -- /chemin/absolu/.video.avi.par2 /chemin/absolu/video.avi
#éxecute en fait : par2create -qq -r5 -n1 -- ./.video.avi.par2 /chemin/absolu/video.avi
Malheur! On aurait pu espérer que
dirname '{}'
retourne le chemin absolu de {}
mais ce gros malin, étant évalué au moment où je tape sur entrée, ne renvoie que "point" . Badaboum, tous les fichiers par2 se retrouvent dans le répertoire d'appel. J'ai plein de solutions bancales et pleines de double passes, mais rien de sympa et léger.
Passons sur le fait que parallel permette de manipuler l'argument {}
, l'argument sans extension {.}
, l'argument sans chemin {/}
(basename) mais pas le chemin de l'argument (dirname)!
Une bonne âme saurait elle imbriquer une commande évaluée à posteriori? Merci d'avance!
# Fais un script
Posté par DLFP est mort . Évalué à 2.
Fais un script contenant ta commande, qui sera exécuté par parallel.
DLFP >> PCInpact > Numerama >> LinuxFr.org
# Absolu / relatif
Posté par Kerro . Évalué à 3.
Je me trompe peut-être, mais que tu ais le chemin absolu ou relatif, tu auras le même résultat. Le problème est que dirname n'est évalué qu'une seule fois.
Je pense que j'utiliserais sed intercalé entre find et parallel. Quelque chose comme:
Comme ça parallel reçoit deux chemins tout cuits. Je ne me suis pas penché sur parallel, mais je pense qu'il sait faire avec deux arguments.
A améliorer pour gérer les noms contenant des espaces et compagnie.
[^] # Re: Absolu / relatif
Posté par maxix . Évalué à 2.
Merci pour la piste, ca marche!
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.