xargs peut faire des exécutions multiples si la ligne est trop longue, mais dans find | tar cvf, tu ne l’as pas mis. Je suppose que c’est un oubli (sinon, ça ne va pas faire grand chose...). Cela dit, moi aussi, je l’ai oublié dans mon premier exemple, qui aurait dû être ls *truc | xargs rm -rf (ATTENTION : ne pas faire pareil chez vous, c’est l’exemple erroné qui casse des trucs).
Cela dit, tar a l’option -T qui fait le boulot sans recours à xargs et sans erreur de ligne trop longue au niveau du shell : find -type f | tar cvf fichier.tar -T -
Il y a intérêt à mettre au moins -type f comme argument de find, sinon chaque répertoire va être inclus avec son contenu, puis son contenu va être réinclus. Cela dit, la commande n’a d’intérêt que s’il y a un autre argument à find (sinon, tar cvf fichier.tar . suffit).
Bon, à l’essai, parallel semble fiable par rapport aux problèmes d’espaces : ls | parallel ls depuis un répertoire contenant un fichier avec des espaces s’en sort bien (je n’ai pas dit que cette commande avait un intérêt), alors que ls | xargs ls indique des erreurs sur les morceaux du nom de fichier avec espace (ls | xargs -d "\n" ls permet de ne pas avoir le problème).
Du coup, parallel ça a l’air très sympa comme commande.
« Le fascisme c’est la gangrène, à Washington comme en Russie. » — adapté de Renaud, Hexagone
[^] # Re: ls * |
Posté par Arthur Accroc . En réponse à la dépêche Nouvelles versions logicielles du projet GNU avril et mai 2017. Évalué à 4.
xargspeut faire des exécutions multiples si la ligne est trop longue, mais dansfind | tar cvf, tu ne l’as pas mis. Je suppose que c’est un oubli (sinon, ça ne va pas faire grand chose...). Cela dit, moi aussi, je l’ai oublié dans mon premier exemple, qui aurait dû êtrels *truc | xargs rm -rf(ATTENTION : ne pas faire pareil chez vous, c’est l’exemple erroné qui casse des trucs).Cela dit,
tara l’option-Tqui fait le boulot sans recours àxargset sans erreur de ligne trop longue au niveau du shell :find -type f | tar cvf fichier.tar -T -Il y a intérêt à mettre au moins
-type fcomme argument defind, sinon chaque répertoire va être inclus avec son contenu, puis son contenu va être réinclus. Cela dit, la commande n’a d’intérêt que s’il y a un autre argument àfind(sinon,tar cvf fichier.tar .suffit).Bon, à l’essai,
parallelsemble fiable par rapport aux problèmes d’espaces :ls | parallel lsdepuis un répertoire contenant un fichier avec des espaces s’en sort bien (je n’ai pas dit que cette commande avait un intérêt), alors quels | xargs lsindique des erreurs sur les morceaux du nom de fichier avec espace (ls | xargs -d "\n" lspermet de ne pas avoir le problème).Du coup,
parallelça a l’air très sympa comme commande.« Le fascisme c’est la gangrène, à Washington comme en Russie. » — adapté de Renaud, Hexagone