Eh bien xargs dans l'idée c'est juste d'utiliser stdin comme source d'arguments pour une commande. Par défaut les séparateurs c'est les espaces/tabs et retours à la ligne :
$ echo '1
> 2 3
> 4' | xargs echo
1 2 3 4
équivalent à un echo 1 2 3 4. Tu peux limiter le nombre d'arguments avec l'option -n pour qu'il exécute plusieurs fois echo.
$ echo "1 2 3 4" | xargs -n 2 echo
1 2
3 4
Et l'option -I de xargs, par exemple, permet de faire la même chose que le {} du -exec de find.
Bref, xargs peut faire la même chose que -exec, mais est plus général (peut se combiner avec d'autres commandes).
Là où le bât blesse, c'est que pour les fichiers c'est pas idéal (ils peuvent contenir des espaces), donc par défaut xargs n'est pas bon pour utiliser la sortie de find. C'est pour ça que find a une option -print0 pour mettre des 0円 entre les noms de fichiers plutôt, et xargs une option -0 qui définit le séparateur comme 0円 aussi, et du coup ils peuvent travailler ensemble de façon sûre.
[^] # Re: Jamais...
Posté par anaseto . En réponse au sondage Les fonctions de bureau social, sémantique, indexation automatique des fichiers. Évalué à 7. Dernière modification le 03 décembre 2014 à 19:24.
Eh bien xargs dans l'idée c'est juste d'utiliser stdin comme source d'arguments pour une commande. Par défaut les séparateurs c'est les espaces/tabs et retours à la ligne :
équivalent à un
echo 1 2 3 4. Tu peux limiter le nombre d'arguments avec l'option-npour qu'il exécute plusieurs fois echo.Et l'option
-Ide xargs, par exemple, permet de faire la même chose que le{}du-execde find.qui remplace XXX par la ligne d'arguments.
Bref, xargs peut faire la même chose que
-exec, mais est plus général (peut se combiner avec d'autres commandes).Là où le bât blesse, c'est que pour les fichiers c'est pas idéal (ils peuvent contenir des espaces), donc par défaut xargs n'est pas bon pour utiliser la sortie de find. C'est pour ça que find a une option
-print0pour mettre des0円entre les noms de fichiers plutôt, et xargs une option-0qui définit le séparateur comme0円aussi, et du coup ils peuvent travailler ensemble de façon sûre.