Je pense que ce sont les moyens courants de passer le résultat d'une commande à la suivante, en tant qu'entrées.
Comment fonctionnent ces trois? Ou quels sont certains sites Web / URL?
Premières choses à taper:
man find
man xargs
La find
commande imprime les résultats sur la sortie standard par défaut, donc l' -print
option n'est normalement pas nécessaire, mais -print0
sépare les noms de fichiers par un octet 0 (NULL) afin que les noms contenant des espaces ou des retours à la ligne puissent être interprétés correctement.
L' -exec
option est quelque chose que vous pouvez utiliser à la place de xargs - la commande find exécute une commande pour chaque élément qu'il trouve.
La xargs
commande lit les chaînes séparées par des espaces ou des sauts de ligne (généralement à partir de la commande find , mais elles peuvent provenir de n'importe où) et exécute une commande pour chaque chaîne.
Si xargs est exécuté avec une option -0 , il attendra des chaînes séparées par NULL en sortie parfind ... -print0
L'avantage de xargs est qu'il peut regrouper les chaînes, de sorte qu'il n'exécute une commande qu'une ou deux fois au lieu de n fois.
Donc, dans l'utilisation normale:
find start_directory -name '*.txt' | xargs ls -l
find listerait les noms de fichiers et xargs émettrait des commandes comme:
ls -l file1.txt file2.txt file3.txt ... fileN.txt
ce qui est plus rapide que l'émission de votre commande find:
ls -l file1.txt
ls -l file2.txt
ls -l file3.txt
ls -l ...
ls -l fileN.txt
Notez que xargs n'est plus nécessaire avec les implémentations de recherche actuelles qui prennent probablement toutes en charge cette syntaxe POSIX:
find directory -name '*.txt' -exec ls -l {} +
ce qui est plus simple et légèrement plus rapide que la variante xargs.
find directory -name '*.txt' | xargs ls -l
Consultez les articles suivants:
Tutoriel de commande Linux et Unix find avec des exemples
xargs: Comment contrôler et utiliser les arguments de ligne de commande
la source