Comment puis-je faire en sorte que xargs exécute la commande exactement une fois pour chaque ligne d'entrée donnée ? Le comportement par défaut de xargs est de découper les lignes et d'exécuter la commande une fois, en passant plusieurs lignes à chaque instance.
Desde http://en.wikipedia.org/wiki/Xargs :
find /path -type f -print0 | xargs -0 rm
Dans cet exemple, find alimente l'entrée de xargs avec une longue liste de noms de fichiers. xargs divise ensuite cette liste en sous-listes et appelle rm une fois pour chaque sous-liste. Ceci est plus efficace que cette version fonctionnellement équivalente :
find /path -type f -exec rm '{}' \ ;
Je sais que find a le drapeau "exec". Je ne fais que citer un exemple illustratif tiré d'une autre ressource.
5 votes
Dans l'exemple que vous donnez,
find /path -type f -delete
serait encore plus efficace :)0 votes
Essayez de ne pas utiliser xargs...
7 votes
OP, je sais que cette question est très ancienne, mais elle apparaît toujours sur Google et, à mon avis, la réponse acceptée est fausse. Voir ma réponse plus longue ci-dessous.
1 votes
Veuillez envisager de changer votre acceptation pour la réponse de @Tobia qui est bien meilleure. La réponse acceptée ne gère pas les espaces dans les noms et n'autorise pas les arguments multiples à la commande xargs, ce qui est l'une des principales caractéristiques de xargs.