11
votes

Xargs Jar TVF - ne fonctionne pas

Objectif: liste des fichiers de tous les pots.

Ceci fonctionne: p> xxx pré>

Ceci fonctionne aussi: p>

find . -name "*.jar" | xargs jar tvf


0 commentaires

3 Réponses :


15
votes

Cela fonctionne-t-il xxx


0 commentaires

9
votes

Le problème est que JAR TVF permet seulement un fichier à transmettre.

La boucle pour exécute les fichiers un par un xxx p> Cependant, Xargs essaie d'adapter autant d'arguments sur une ligne que possible. Il essaie donc ce qui suit: xxx

Vous pouvez vérifier cela en plaçant un écho dans votre commande: xxx

le bon La solution est la solution Xargs d'utiliser un seul paramètre par commande: xxx

ou xxx


2 commentaires

Merci pour le -I indice, sympa.


@Sarnold Vous devez savoir que cet argument ( -i ) est obsolète. Voir Man Xargs ( Xargs (GNU Windowtils) 4.4.2 ): Cette option est obsolète; Utilisez -Je à la place. Il n'y a aucun problème à l'utiliser en mode interactif, mais je l'éviterais dans des scripts car cela pourrait disparaître dans une version future de Xargs.



6
votes

Il ne fonctionne pas car Xargs n'invoque qu'un seul processus avec tous les arguments.

Il existe un moyen d'invoquer un nouveau processus pour chaque argument à l'aide de -i '{}' p >

Essayez ceci pour comprendre: P>

$ seq 10 | xargs echo
1 2 3 4 5 6 7 8 9 10
$ seq 10 | xargs -I'{}' echo {}
1
2
3
4
5
6
7
8
9
10


0 commentaires