15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer
28.10.2024
2 +1

Comment utiliser la commande `xargs` sous Linux : un guide complet

La commande xargs est l’un des utilitaires les plus puissants et polyvalents disponibles dans les systèmes Unix/Linux. Elle construit et exécute des commandes en lisant des arguments depuis l’entrée standard, comblant efficacement le fossé entre les commandes qui produisent une sortie et celles qui consomment des arguments. Que vous gériez des milliers de fichiers, automatisiez des tâches shell répétitives ou construisiez des pipelines de commandes complexes, maîtriser xargs améliorera considérablement votre efficacité au terminal.

Dans ce guide complet, nous verrons comment xargs fonctionne en coulisses, parcourrons des exemples pratiques du monde réel, expliquerons toutes les options essentielles et vous montrerons comment éviter les pièges courants.

Qu’est-ce que la commande xargs et comment fonctionne-t-elle ?

Dans son essence, xargs lit des éléments depuis l’entrée standard (stdin) — généralement séparés par des espaces ou des sauts de ligne — et les passe comme arguments à une commande spécifiée. C’est essentiel car de nombreuses commandes Unix n’acceptent pas directement l’entrée redirigée comme arguments ; elles attendent des arguments sur la ligne de commande. xargs résout ce problème de manière élégante.

La syntaxe fondamentale est :

command | xargs [options] another_command

Par exemple, pour trouver tous les fichiers .txt dans le répertoire courant et les supprimer :

find . -name "*.txt" | xargs rm

Ici, find génère une liste de noms de fichiers .txt et les écrit sur stdout. xargs lit cette liste et passe les noms de fichiers comme arguments à rm, qui les supprime ensuite — le tout en une seule opération efficace.

> Pourquoi ne pas simplement utiliser rm $(find . -name "*.txt") ? La substitution de commandes peut échouer ou se comporter de manière inattendue lorsque la liste d’arguments est extrêmement longue ou lorsque les noms de fichiers contiennent des caractères spéciaux. xargs gère les deux scénarios de manière plus sûre et plus efficace.

Utilisation de base de xargs

Avant de plonger dans des exemples avancés, établissons une compréhension claire du schéma d’invocation de base.

Passer une liste simple d’arguments

echo "file1.txt file2.txt file3.txt" | xargs touch

Cette commande crée trois fichiers — file1.txt, file2.txt et file3.txt — en passant les trois noms comme arguments à touch. Sans xargs, vous devriez soit saisir chaque nom de fichier manuellement, soit écrire une boucle.

Vérifier ce que xargs va exécuter

Avant d’exécuter une commande potentiellement destructrice, utilisez le drapeau -t pour afficher la commande construite sur stderr avant de l’exécuter :

echo "file1.txt file2.txt" | xargs -t rm

Sortie :

rm file1.txt file2.txt

C’est inestimable pour déboguer des pipelines avant de s’engager dans l’exécution.

Exemples pratiques d’utilisation de xargs

1. Supprimer des fichiers trouvés par find

L’une des utilisations les plus courantes et les plus puissantes de xargs est de le combiner avec find pour supprimer des fichiers correspondant à des critères spécifiques :

find /var/log -name "*.log" -mtime +30 | xargs rm

Cela trouve tous les fichiers .log dans /var/log datant de plus de 30 jours et les supprime. Ce type de nettoyage automatisé est essentiel pour la maintenance des serveurs — quelque chose que les administrateurs gérant un Hébergement VPS ou des Serveurs Dédiés traitent régulièrement pour maintenir l’utilisation du disque sous contrôle.

2. Limiter le nombre d’arguments par exécution avec -n

Par défaut, xargs passe autant d’arguments que possible à la commande en une seule invocation. L’option -n vous permet de contrôler exactement combien d’arguments sont passés par exécution :

echo "one two three four five six" | xargs -n 2 echo

Sortie :

one two
three four
five six

C’est particulièrement utile lorsqu’une commande a une limite sur le nombre d’arguments qu’elle peut accepter, ou lorsque vous souhaitez traiter des éléments par lots contrôlés.

3. Gérer les noms de fichiers avec des espaces et des caractères spéciaux avec -0

C’est l’une des pratiques de sécurité les plus importantes lors de l’utilisation de xargs. Les noms de fichiers contenant des espaces, des sauts de ligne ou d’autres caractères spéciaux briseront les pipelines naïfs. La solution est d’utiliser find avec -print0 (qui sépare les noms de fichiers par des octets nuls au lieu de sauts de ligne) et xargs avec -0 :

find . -name "*.txt" -print0 | xargs -0 rm

L’octet nul (

15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer