Certaines commandes Linux prennent les entrées à la fois depuis l’entrée standard (stdin) et en tant qu’argument de ligne de commande. Cependant, d’autres sont conçues pour ne prendre en compte que l’entrée en tant qu’argument. Pour pouvoir traiter l’entrée standard, ces commandes Linux doivent utiliser la commande xargs.
La commande xargs permet cela et donc d’enchaîner des commandes Linux, par exemple, combiner find avec rm ou mv.
Dans ce tutoriel, je vous montre comment utiliser la commande xargs avec de nombreux exemples.

Table des matières
- 1 A quoi sert la commande xargs
- 2 Comment utiliser la commande xargs avec des exemples
- 2.1 Utiliser xargs avec wc
- 2.2 Combiner xargs avec find
- 2.3 Combiner xargs avec grep
- 2.4 Utiliser xargs avec de multiples commandes
- 2.5 Lire le contenu d’un fichier
- 2.6 Créer un fichier archive tar avec xargs
- 2.7 Imprimer la commande dans la console
- 2.8 Approuver l’exécution de la commande xargs
- 2.9 Limiter la sortie par ligne
- 2.10 Spécifier le délimiteur
- 2.11 Supprimer tous les fichiers sauf un type
- 2.12 Lister tous les comptes d’utilisateurs Linux sur le système
- 3 Liens
A quoi sert la commande xargs
Tous les utilitaires Linux standard ont trois flux de données qui leur sont associés. Il s’agit du flux d’entrée standard (stdin), du flux de sortie standard (stdout) et du flux d’erreur standard (stderr).
Ces flux fonctionnent avec du texte. Nous envoyons des entrées (stdin) à une commande en utilisant du texte, et la réponse (stdout) est écrite dans la fenêtre du terminal sous forme de texte. Les messages d’erreur sont également écrits dans la fenêtre du terminal sous forme de texte (stderr).
Bien que toutes les commandes Linux disposent des trois flux standard, elles n’acceptent pas toutes le stdout d’une autre commande comme entrée dans leur stdin. Cela signifie que vous ne pouvez pas leur envoyer de données par pipe.
La commande xargs prend l’entrée standard et la convertit en argument de commande pour une autre commande. Cette fonctionnalité est particulièrement utile dans la gestion des fichiers, où xargs est utilisée en combinaison avec rm, cp, mkdir et d’autres commandes similaires.
Pour bien comprendre, utilisations l’option -1 de la commande ls qui permet d’afficher une liste de fichiers en colonne :
ls -1 *.txt
Si on pipe la commande avec xargs, on obtient alors un flux de texte :
ls -1 *.txt|xargs
Comment utiliser la commande xargs avec des exemples
Utiliser xargs avec wc
Voici un exemple d’utilisation basique de xargs avec la commande wc.
Cette dernière permet de compter le nombre de lignes, de mots, de caractères et d’octets de chaque fichier donné ou d’entrée standard et d’imprimer le résultat.
ls *.txt | xargs wc
Cela permet d’utiliser wc pour compter facilement les mots, les caractères et les lignes dans plusieurs fichiers.
Voici les explications :
- ls liste les fichiers *.txt et passe la liste à xargs
- xargs transmet les noms de fichiers à wc
- wc traite les noms de fichiers comme s’il les avait reçus en tant que paramètres de ligne de commande
Combiner xargs avec find
La commande find précède souvent xargs dans un pipeline. Utilisez-la pour fournir une liste de fichiers pour un traitement ultérieur par xargs. La syntaxe ressemble à ceci :
find <emplacement> -name "<terme à chercher>" -type f | xargs <commande>
L’exemple ci-dessus montre l’utilisation de la commande find pour trouver tous les fichiers portant l’extension .sh. La liste des fichiers est ensuite envoyée à xargs, qui utilise la commande rm pour les supprimer.
Cependant, xargs n’inclut pas automatiquement les fichiers qui contiennent des espaces vides dans leurs noms. Pour inclure ces fichiers également, utilisez l’option -print0 pour find, et l’option -0 pour xargs :
find [location] -name "<terme à chercher>" -type f -print0 | xargs -0 <commande>
Par exemple en combinant find et la commande rm afin de supprimer les fichiers avec l’extension txt :
find . -name "*txt" -type f -print0| xargs -0 rm -f
Combiner xargs avec grep
Utilisez xargs avec la commande grep pour rechercher une chaîne dans la liste de fichiers fournie par la commande find.
find . -name '<terme à chercher>' | xargs grep '<mot à trouver dans les fichiers>'
L’utilisation de la commande grep avec xargs pour rechercher des textes dans les fichiers
L’exemple ci-dessous a recherché tous les fichiers avec l’extension .txt et les a transmis à xargs, qui a ensuite exécuté la commande grep sur ces fichiers.
find . -name '<terme à chercher>' | xargs grep '<mot à trouver dans les fichiers>'
Utiliser xargs avec de multiples commandes
Pour exécuter plus d’une commande avec xargs, utilisez l’option -I. La syntaxe est la suivante :
[commande entrée] | xargs -I % sh -c '[commande1] %; [commande2] %'
Par exemple, la commande suivante permet de créer une série de répertoire à partir d’un fichier texte.
La commande cat liste le contenu du fichier texte et la transmet à xargs que l’on peut utiliser dans une variable %.
cat repertoire.txt |xargs -I % sh -c 'echo %; mkdir %'
Lire le contenu d’un fichier
Comme mentionné précédemment, xargs lit l’entrée standard. Utilisez l’option -a pour lire le contenu d’un fichier à la place.
xargs -a <fichier>
Créer un fichier archive tar avec xargs
Comme mentionné précédemment, xargs lit l’entrée standard. Utilisez l’option -a pour lire le contenu d’un fichier à la place.
find <emplacement> -name "<terme à chercher>" -type f -print0 | xargs -0 tar -cvzf <nom fichier archive tar-gz>
Imprimer la commande dans la console
Pour voir les commandes exécutées par xargs dans la sortie standard, utilisez l’option -t.
[commande entrée] | xargs -t [commande]
Par exemple pour créer des répertoires en fournissant la liste via la commande echo :
echo 'repertoire1 repertoire2 repertoire3'|xargs -t mkdir
[commande entrée] | xargs -p [commande]
Approuver l’exécution de la commande xargs
Certaines opérations de xargs, comme la suppression de fichiers et de dossiers, sont irréversibles. Pour contrôler l’exécution de ces commandes, utilisez l’option -p.
[commande entrée] | xargs -p [commande]
Par exemple, la commande rm sans l’option -f demande une confirmation :
echo "fichier.txt"|xargs -p rm
L’utilisation de l’option -p avec xargs pour approuver l’exécution des commandes
Lorsque vous exécutez une commande avec l’option -p, xargs affiche une ligne de confirmation avant de l’exécuter. Tapez y pour continuer, ou n pour annuler l’opération.
Limiter la sortie par ligne
Il est parfois nécessaire de contrôler le nombre d’arguments que xargs prend en même temps. Effectuez cette action en utilisant l’option -n suivie du nombre d’arguments auxquels vous limitez xargs :
[commande entrée] | xargs -n <nombre> [commande]
Dans l’exemple ci-dessous, xargs prend la chaîne de la commande echo et la divise en trois. Ensuite, il exécute un autre echo pour chacune des parties :
echo "1 2 3 4 5 6 7 8 9"|xargs -n 4
Spécifier le délimiteur
Le délimiteur par défaut de xargs est un espace vide. Pour modifier le délimiteur par défaut, utilisez l’option -d suivie d’un caractère unique ou d’un caractère d’échappement tel que n (une nouvelle ligne).
[commande entrée] | xargs -d <nouveau délimiteur>|xargs [commande]
Dans l’exemple ci-dessous, la commande xargs demande au système d’utiliser * comme délimiteur et d’appliquer mkdir à chacun des arguments obtenus.
echo "repertoire1*repertoire2*repertoire3"|xargs -d*|xargs mkdir
Supprimer tous les fichiers sauf un type
De même vous pouvez supprimer tous les fichiers sauf un type particulier avec l’option -not de la commande find.
find . -type f -not -name "*.txt" -print0 | xargs -0 -I {} rm -v {}
- -type f : cherche tous les fichiers
- mais avec l’extension *.txt
- Puis on envoie le tout à xargs qui va supprimer les fichiers tout en affichant la liste grâce à l’option-0
Lister tous les comptes d’utilisateurs Linux sur le système
Utilisez xargs pour organiser la sortie des commandes, comme cut. Considérez l’exemple suivant :
cut -d : -f1 < /etc/passwd | sort | xargs
La commande cut accède au fichier /etc/passwd et utilise le délimiteur : pour couper le début de chaque ligne du fichier. La sortie est ensuite acheminée vers sort, qui trie les chaînes reçues, et enfin vers xargs qui les affiche :
Liens
- 12 exemples pour utiliser la commande cat sur Linux
- 6 exemples pour utiliser la commande tail sur Linux
- Comment utiliser la commande less sur Linux avec des exemples
- La commande cut de Linux : utilisation et exemples
- Comment utiliser la commande AWK avec des exemples
- Commande sed : utilisation et exemples
- 12 exemples de commandes grep sur Linux
- La commande TR : utilisations et exemples
- La commande echo : utilisations et exemples
- La commande sort Linux : utilisations et exemples
- La commande join Linux : utilisations et exemples