Comment utiliser la commande xargs
La commande xargs est un utilitaire puissant dans les systèmes Unix/Linux qui est utilisé pour construire et exécuter des commandes en utilisant l’entrée standard. Elle prend l’entrée d’une commande ou d’un fichier et la transmet en tant qu’argument à une autre commande. Cette fonction est particulièrement utile pour gérer un grand nombre de fichiers, d’arguments ou de données qui doivent être traités par d’autres commandes.
Dans cet article, nous allons explorer le fonctionnement de xargs, ses cas d’utilisation pratiques et la manière de l’implémenter dans différents scénarios.
Utilisation de base de xargs
La commande xargs lit les éléments de l’entrée standard (stdin), généralement séparés par des espaces ou des nouvelles lignes, et les transmet en tant qu’arguments à la commande spécifiée. L’utilisation la plus élémentaire de xargs est la suivante :
Par exemple, si vous souhaitez supprimer tous les fichiers .txt d’un répertoire en utilisant find et rm, vous pouvez utiliser :
Ici, find génère une liste de fichiers .txt, et xargs transmet cette liste comme argument à la commande rm, qui supprime les fichiers.
Exemples pratiques d’utilisation de xargs
1. Passer des arguments à une commande
L’utilisation la plus courante de xargs consiste à passer une longue liste d’arguments à une commande. Par exemple, vous pouvez créer plusieurs fichiers à l’aide de touch:
Cette commande crée trois fichiers : file1.txt, file2.txt et file3.txt.
2. Suppression des fichiers trouvés par find
Une puissante combinaison de find et de xargs vous permet de supprimer des fichiers en fonction de critères spécifiques. Par exemple, pour rechercher et supprimer tous les fichiers .log d’un répertoire :
Cela permet de trouver tous les fichiers .log et de les supprimer. Sans xargs, vous devriez gérer ce processus manuellement ou utiliser des constructions plus compliquées.
3. Limitation du nombre d’arguments
Par défaut, xargs passe autant d’arguments que possible à la commande en une seule fois. Cependant, vous pouvez limiter le nombre d’arguments transmis avec l’option -n. Par exemple, l’option -n permet de limiter le nombre d’arguments transmis à la commande :
Sortie :
Cette option limite echo à deux arguments par exécution de la commande, ce qui permet de diviser l’entrée en petits morceaux.
4. Confirmation de l’exécution de la commande
Si vous souhaitez exécuter une commande de manière interactive, en demandant une confirmation avant d’exécuter la commande pour chaque argument, utilisez l’option -p :
Cette option vous demandera de confirmer l’exécution de la commande avant de supprimer chaque fichier.
5. Traitement des fichiers contenant des caractères spéciaux
Les noms de fichiers ou les données peuvent parfois contenir des espaces ou des caractères spéciaux. Dans ce cas, il est préférable d’utiliser find avec l’option -print0 et xargs avec l’option -0 pour s’assurer que les données sont traitées correctement :
Cela permet de s’assurer que les noms de fichiers contenant des espaces ou des caractères spéciaux sont correctement transmis à la commande rm.
6. Utilisation de xargs avec grep
Vous pouvez combiner xargs avec grep pour rechercher un motif dans plusieurs fichiers. Par exemple, vous pouvez combiner xargs et grep pour rechercher un motif dans plusieurs fichiers :
Cette commande trouve tous les fichiers
.txt
7. Combinaison de plusieurs commandes avec xargs
Vous pouvez utiliser xargs pour exécuter plusieurs commandes. Par exemple, si vous souhaitez à la fois lister et supprimer un ensemble de fichiers :
Ici, tee affiche la liste des fichiers .tmp sur le terminal (via /dev/tty), et xargs transmet cette liste à la commande rm pour qu’elle soit supprimée.
Options courantes avec xargs
- –n : Limite le nombre d’arguments transmis à la commande par exécution. Par exemple, xargs -n 2 transmet deux arguments à la fois.
- –0: Utilisé pour gérer les entrées à terminaison nulle, typiquement à partir de find en utilisant -print0. Utile pour gérer les noms de fichiers contenant des espaces ou des caractères spéciaux.
- –I {}: Remplace les occurrences de {} par des arguments provenant de stdin. Ceci est utile lorsque vous voulez placer des arguments à un point spécifique de la commande, et pas seulement à la fin.
- –p: Demande à l’utilisateur de confirmer avant d’exécuter la commande.
- –t: Imprime la commande dans le terminal avant de l’exécuter, ce qui est utile pour le débogage.
Pourquoi utiliser xargs ?
- Efficacité: Lorsque vous traitez un grand nombre de fichiers ou d’entrées, xargs permet de réduire la charge de travail liée à l’exécution de plusieurs commandes en regroupant les arguments.
- Flexibilité: xargs apporte de la flexibilité en vous permettant de combiner des commandes dans un pipeline, en passant des données entre elles de manière transparente.
- Automatisation: Lors de l’écriture de scripts shell, xargs est essentiel pour automatiser les tâches qui nécessitent le traitement de nombreuses entrées. Il rend la gestion des listes de fichiers, des listes d’arguments et des flux de données simple et efficace.
Conclusion
La commande xargs est un outil puissant qui améliore la façon dont vous interagissez avec d’autres commandes dans les systèmes Unix/Linux. Qu’il s’agisse de gérer des fichiers, de traiter des flux de données ou d’exécuter des tâches répétitives, xargs rationalise le processus. En apprenant à exploiter ses options et en le combinant avec d’autres commandes telles que find, grep ou rm, vous pouvez considérablement améliorer votre productivité dans le terminal.
Si vous n’avez jamais utilisé xargs, c’est le moment idéal pour l’essayer et voir comment il peut simplifier vos opérations en ligne de commande.