Commande xargs dans Linux avec des exemples utiles

Commande xargs dans Linux avec des exemples utiles

Xargs est une commande puissante Linux / Unix pour construire et exécuter des lignes de commande à partir de l'entrée standard. Il prend la sortie d'une commande et la transmet comme argument d'une autre commande. Xargs prend une entrée standard, délimité par des blanc. Les lignes vides sur l'entrée standard sont ignorées.

Syntaxe

xargs [Option]… Commande [Initial-Args]… 

Ici, la commande est exécutée avec des arguments argumentaires initiaux et plus d'arguments lus à partir de l'entrée.

Options de commande xargs

Les commandes Xargs fournissent un nombre limité d'arguments de ligne de commande mais suffisamment pour utiliser ses fonctionnalités.

  • -0, --null - Les articles sont séparés par un null, pas un espace blanc
  • -A, --arg-file = fichier - Lire les arguments du fichier, pas l'entrée standard.
  • -D, --Deliter = caractère - Les éléments dans le flux d'entrée sont séparés par caractère, et non dans l'espace
  • -Fin - Définir une chaîne en tant que connexion EOF. Si la chaîne trouvée, le reste sera ignoré.
  • -L, --max-lines = max-lines - Spécifiez le nombre maximum de lignes (non chlanque) à prendre en entrée sur la ligne de commande
  • -n, - max-args = max-args - Spécifiez les arguments maximaux par ligne de commande
  • -P, --max-procs = max-procs - Spécifiez les processus maximaux à exécuter à la fois
  • -P, - interactif - Exécuter les processus interactifs avec invite avant d'exécuter les commandes
  • -r, --no-run-if-vide - N'exécutez pas la commande si les arguments d'entrée sont vides.
  • -t, --verbose - Imprimez toutes les commandes à l'écran les exécuter

Exemples de commande xargs

Exemple 1. Copiez un grand nombre de fichiers dans un autre dossier.

Parfois, nous devons copier une longue liste de fichiers, dans ce cas, la commande CP a échoué avec l'erreur "Liste d'arguments trop long". Nous pouvons utiliser des xargs pour faire cette tâche.

Find / Backup / -Type F | xargs -n1 -i cp  / var / www / backup /  
Exemple 2: supprimer plusieurs fichiers d'un dossier.

Parfois, nous devons supprimer un grand nombre de fichiers d'un dossier. L'exemple ci-dessous supprimera tout .Fichiers journaux du répertoire / Var / journal.

find / var / www / tmp / -type f | xargs rm -f  

La commande ci-dessus ne manquera pas de supprimer les fichiers avec des espaces dans nommé. Pour gérer les espaces dans la commande xargs, essayez la commande ci-dessous.

find / var / www / tmp / -type f -print0 | xargs -0 rm -f  
Exemple 3: compter le nombre de lignes dans plusieurs fichiers.

L'exemple ci-dessous comptera le nombre de lignes pour chacun .Fichier txt dans le répertoire / opt et son sous-répertoire

trouver / opt -name "*.txt "| xargs wc -l  

Pour gérer les fichiers ayant des espaces en nom, utilisez la commande suivante.

trouver / opt / -Name "*.log "-print0 | xargs -0 wc -l  
Exemple 4: Faire une sauvegarde de tous les fichiers de configuration.

Si vous souhaitez effectuer une sauvegarde de tous les fichiers de configuration (extension .conf) Dans votre système, utilisez la commande ci-dessous.

trouver / -name "*.conf "| xargs Tar Czf Config.le goudron.gz  
LS -L Config.le goudron.gz  -rw-r - r--. 1 racine racine 193310 avril 1 13:26 Config.le goudron.gz 
Exemple 5. Utilisez le délimiter Custome avec xargs.

Nous pouvons également avoir utilisé le délemètre personnalisé avec la commande xargs, par défaut, il utilise l'espace et la nouvelle ligne comme délimiter. Paramètre d'utilisation pour définir le délimiter.

Echo "1,2,3,4,5" | xargs -d, écho  

Sortir:

1 2 3 4 5 
Exemple 6: Afficher la sortie dans la ligne de Sepreate avec Xargs.

Dans l'exemple 5 ouput s'affiche en une seule ligne, nous pouvons également spécifier pour afficher chaque sortie dans la ligne SEPRATE.

Echo "1,2,3,4,5" | xargs -d, -l 1 echo  

Sortir:

1 2 3 4 5 
Exemple 7: Gestion de l'espace vierge dans les noms de fichiers ou le chemin.

Pour gérer les espaces dans les noms, utilisez -print0 avec la commande find et -0 avec la commande xargs comme paramètre.

find / tmp -print0 | xargs -0 -l 1 echo