Explication détaillée des diverses utilisations des techniques de commande xargs sous Linux

黄舟
Libérer: 2017-05-28 11:39:31
original
1705 Les gens l'ont consulté

xargs est un filtre permettant de transmettre des paramètres aux commandes, et est également un outil permettant de combiner plusieurs commandes. L'article suivant vous présente principalement les informations pertinentes sur l'utilisation de la commande xargs dans linux. Les amis dans le besoin peuvent s'y référer.

Préface

La commande xargs reformate les données reçues puis les fournit comme paramètre à d'autres commandes. xargs est présenté ci-dessous. Prenons un. examinez diverses techniques d’utilisation des commandes.

1. Convertir l'entrée multiligne en entrée monoligne :

[root@host1 test]# echo -e "1 2 3 4 5 \n6 7 8 \n9 10 11 12" >example.txt
[root@host1 test]# cat example.txt 
1 2 3 4 5 
6 7 8 
9 10 11 12
[root@host1 test]# cat example.txt |xargs 
1 2 3 4 5 6 7 8 9 10 11 12
Copier après la connexion

Convertir l'entrée monoligne en sortie multiligne :

[root@host1 test]# cat example.txt | xargs -n 3
1 2 3
4 5 6
7 8 9
10 11 12
Copier après la connexion

Personnalisez le délimiteur pour la conversion (le délimiteur par défaut est un espace) :

[root@host1 test]# echo "Hello:Hello:Hello:Hello" | xargs -d : -n 2
Hello Hello
Hello Hello
Copier après la connexion

2. Utilisez-le dans le script :

[root@host1 test]# cat echo.sh 
#!/bin/bash
echo $* '^-^'
Copier après la connexion

Lorsque les paramètres sont transmis à echo.sh, il les imprimera et se terminera par "^-^":

[root@host1 test]# echo -e "Tom\nHarry\nJerry\nLucy" > args.txt
[root@host1 test]# cat args.txt | xargs bash echo.sh 
Tom Harry Jerry Lucy ^-^
[root@host1 test]# cat args.txt | xargs -n 2 bash echo.sh 
Tom Harry ^-^
Jerry Lucy ^-^
Copier après la connexion

Dans l'exemple ci-dessus, nous mettez les sources des paramètres dans le fichier args.txt, mais en plus de ces paramètres, nous avons également besoin de certains paramètres fixes, tels que :

[root@host1 test]# bash echo.sh Welcome Tom 
Welcome Tom ^-^
Copier après la connexion

Lors de l'exécution de la commande ci-dessus, Tom est variables et le reste sont des constantes, nous pouvons extraire les arguments de "args.txt" et les fournir à la commande comme suit :

[root@host1 test]# bash echo.sh Welcome Tom 
[root@host1 test]# bash echo.sh Welcome Herry
[root@host1 test]# bash echo.sh Welcome Jerry
[root@host1 test]# bash echo.sh Welcome Lucy
Copier après la connexion

À ce stade la fois où nous devons utiliser la commande -I dans xargs :

[root@host1 test]# cat args.txt | xargs -I {} bash echo.sh Welcome {} 
Welcome Tom ^-^
Welcome Harry ^-^
Welcome Jerry ^-^
Welcome Lucy ^-^
Copier après la connexion

-I {} pour spécifier le remplacement de string Pour chaque paramètre de commande, la chaîne {}. sera remplacé par les paramètres lus depuis stdin.

Lorsque -I est utilisé, la commande est exécutée dans une boucle S'il y a 4 paramètres, la commande sera accompagnée de {} It. est exécuté 4 fois, et {} sera remplacé par les paramètres correspondants à chaque exécution.

3. Utiliser avec find

xargs et find sont une très bonne combinaison, mais nous l'utilisons généralement de la mauvaise manière. Utilisez-les dans des manières suivantes, telles que :

[root@host1 test]# find . -type f -name "*.txt" -print | xargs rm -f
Copier après la connexion

Il est dangereux de le faire, parfois supprimer des fichiers qui n'ont pas besoin d'être supprimés, si le nom du fichier contient un caractère espace (' '), alors xargs est susceptible de penser qu'il s'agit de délimiteurs (par exemple, file text.txt sera confondu avec file et text.txt par xargs).

Si nous voulons utiliser la sortie de find comme entrée dans xargs, nous devons utiliser -print0 avec find pour terminer par les caractères null('

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal