La commande xargs lit à partir de l'entrée standard et exécute une commande pour chaque argument fourni. Chaque argument doit être séparé par des blancs. L'opérateur pipe est utilisé pour faire de la sortie de la première commande l'entrée de la deuxième commande. La commande xargs est couramment utilisée avec la commande find pour opérer sur chaque résultat trouvé dans la recherche de fichier ou de répertoire.
Syntaxe
La syntaxe générale de la commande xargs est :
# command [options] [arguments] | xargs [options] {command}
Supposons que vous souhaitiez supprimer tous les fichiers du répertoire /foo qui ont une extension .pdf. Vous pouvez utiliser xargs pour automatiser le processus :
# find /foo -type f -name "*.pdf" | xargs rm
La commande find recherche tous les fichiers dans /foo qui ont une extension .pdf, puis dirige le résultat vers la commande xargs. Étant donné que les résultats sont délimités par un espace, la commande xargs exécutera la commande rm pour chaque fichier dans les résultats, supprimant tous les fichiers PDF du répertoire.
La commande xargs a diverses options comme indiqué ci-dessous :
Option | Description |
---|---|
-I {chaîne de remplacement} | Considérez chaque ligne de l'entrée standard comme un seul argument. |
-L {nombre de lignes} | Lire un nombre spécifié de lignes à partir de l'entrée standard et les concaténer en une longue chaîne. |
-p | Demander à l'utilisateur avant chaque commande. |
-n {nombre d'arguments} | Lire le nombre maximum d'arguments à partir de l'entrée standard et les insérer à la fin du modèle de commande. |
-E {fin de chaîne} | Représente la fin de l'entrée standard. |
-t | Écrivez chaque commande dans la sortie d'erreur standard avant d'exécuter la commande. |
-s {taille max} | Définissez la taille maximale autorisée d'une liste d'arguments sur un nombre spécifié de caractères. |
Exemples de commande xargs
1. Exécutez une commande en utilisant les données d'entrée comme arguments :
# arguments_source | xargs command
2. Exécutez plusieurs commandes chaînées sur les données d'entrée :
# arguments_source | xargs sh -c "command1 && command2 | command3"
3. Supprimez tous les fichiers avec une extension `.backup` (`-print0` utilise un caractère nul pour diviser les noms de fichiers et `-0` l'utilise comme délimiteur) :
# find . -name '*.backup' -print0 | xargs -0 rm -v
4. Exécutez la commande une fois pour chaque ligne d'entrée, en remplaçant toutes les occurrences de l'espace réservé (ici marqué par `_`) par la ligne d'entrée :
# arguments_source | xargs -I _ command _ optional_extra_arguments
5. Exécutions parallèles d'un maximum de processus "max-procs" à la fois ; la valeur par défaut est 1. Si `max-procs` vaut 0, xargs exécutera autant de processus que possible à la fois :
# arguments_source | xargs -P max-procs command