Aperçu
xargs lit les données de l'entrée standard, les interprète comme des arguments séparés par des espaces ou des sauts de ligne, puis les transmet en tant qu'arguments à la commande spécifiée pour exécution. Elle est particulièrement puissante lorsqu'elle est utilisée avec la commande find pour effectuer des opérations par lots sur des listes de fichiers.
Fonctionnalités principales
- Conversion des données d'entrée standard en arguments de commande
- Limitation du nombre d'arguments lors de l'exécution de commandes
- Support du traitement parallèle
- Gestion sécurisée des noms de fichiers contenant des caractères spéciaux
Options principales
Les options principales de la commande xargs sont utilisées pour configurer la manière dont les entrées sont traitées, contrôler l'exécution des commandes et définir le format de sortie.
Traitement des entrées
Contrôle de l'exécution
Commande générée :
Essayez de combiner les commandes.
Description:
`xargs` Exécute la commande.
Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.
Exemples d'utilisation
xargs peut être utilisé de manière flexible dans divers scénarios. Voici quelques exemples d'utilisation courants.
Utilisation de base : suppression de plusieurs fichiers
echo "file1.txt file2.txt" | xargs rm
Transmet les noms de fichiers reçus de l'entrée standard en tant qu'arguments à la commande rm pour les supprimer.
Suppression sécurisée de fichiers avec find
find . -name "*.bak" -print0 | xargs -0 rm
Supprime les fichiers en toute sécurité, même s'ils contiennent des espaces ou des caractères spéciaux dans leurs noms, en utilisant la combinaison find -print0 et xargs -0.
Exécuter une commande pour chaque fichier (chaîne de remplacement)
find . -name "*.log" | xargs -I {} mv {} {}.old
Exécute la commande mv pour chaque fichier .log trouvé par find afin de changer son extension en .old.
Connexion SSH à plusieurs hôtes en parallèle
cat hostnames.txt | xargs -P 5 -I {} ssh {} "uptime"
Tente de se connecter simultanément à 5 hôtes listés dans le fichier hostnames.txt via SSH pour vérifier leur temps de fonctionnement (uptime).
Invite de confirmation avant exécution
ls *.tmp | xargs -p rm
Demande une confirmation pour chaque fichier .tmp à supprimer dans le répertoire courant.
Conseils et précautions
Conseils et points à surveiller pour utiliser xargs efficacement.
Gestion sécurisée des noms de fichiers
Étant donné que les noms de fichiers peuvent contenir des espaces, des tabulations, des sauts de ligne, des guillemets et d'autres caractères spéciaux, utilisez toujours la combinaison `find ... -print0 | xargs -0 ...` lorsque vous travaillez avec la commande find. Cela évite ces problèmes en séparant les éléments par des caractères nuls.
- Utilisez toujours `find -print0` avec `xargs -0`
- Par défaut, la séparation se fait par espaces, ce qui peut causer des problèmes si les noms de fichiers contiennent des espaces.
Prudence lors de l'exécution de commandes dangereuses
Soyez très prudent lorsque vous utilisez xargs avec des commandes qui modifient le système, telles que rm, mv, chown. Il est conseillé d'utiliser l'option `-p` pour confirmer chaque exécution ou l'option `-t` pour vérifier les commandes à exécuter à l'avance.
- Confirmez avant l'exécution avec l'option `-p` (prompt)
- Vérifiez les commandes à exécuter avec l'option `-t` (trace)
- Testez d'abord avec `echo` pour vérifier que le comportement est celui attendu.
xargs vs boucle for
Pour des tâches simples, une boucle for du shell peut être plus intuitive. Cependant, lorsque vous traitez un grand nombre de fichiers/éléments, lorsque le traitement parallèle est nécessaire, ou lorsque vous dépassez la limite de longueur de ligne de commande, xargs est une alternative plus efficace et plus puissante.
- Traitement de gros volumes de fichiers : `xargs` est plus efficace en mémoire
- Traitement parallèle : `xargs -P`
- Limite de longueur de ligne de commande : `xargs` divise automatiquement le traitement.