Comment utiliser des xargs sur Linux

Comment utiliser des xargs sur Linux
xargs est un outil de ligne de commande. Si vous souhaitez rediriger la sortie d'une commande comme argument d'une autre commande, alors xargs est l'outil pour vous. C'est un outil très utile pour faire facilement beaucoup de choses sur la ligne de commande. Dans cet article, je vais vous montrer comment utiliser Xargs sur Linux. Alors, commençons.

Comment fonctionne Xargs:

Le format dans lequel vous utilisez la commande xargs est:

$ Command1 | xargs Command2

Vous pouvez également modifier le comportement des xargs avec certaines options. Dans ce cas, le format de la commande xargs sera:

$ Command1 | xargs [Options] Command2

Ici, la sortie du commande 1 sera utilisé comme argument de Command2. La sortie de commande 1 est décomposé en de nombreux arguments par xargs en fonction d'un personnage appelé Demiter. Ensuite, Xargs exécute la commande Command2 Pour chacun de ces arguments et cet argument est passé comme l'argument de la commande Command2.

Par exemple, disons, la sortie de commande 1 est comme suit:

Value1 Valeur 2 Valeur3

Disons que le caractère délimiteur est espace. Maintenant, la sortie de commande 1 sera divisé en 3 arguments, valeur 1, valeur2, et valeur3.

Maintenant, Xargs exécute la commande Command2 Pour chacun des 3 arguments une fois.

$ Command2 Value1
$ Command2 Value2
$ Command2 Value3

Ici, valeur 1, valeur2, et valeur3 Les arguments sont-ils analysés par xargs à partir de la sortie de la commande commande 1.

Vous pouvez obtenir le même effet en utilisant des boucles dans un script shell. Mais Xargs est juste un moyen plus facile de faire les choses sans boucles, en particulier sur la ligne de commande.

Par défaut, le délimiteur de Xargs est un caractère Newline / Space. Mais vous pouvez modifier le caractère de délimiteur avec le -d ou -délimiteur Option de xargs.

Par défaut, Xargs fonctionne avec un argument à la fois. Si vous voulez exécuter la commande Command2 avec plusieurs arguments de la sortie de la commande commande 1, alors vous pouvez utiliser le -n ou -max-args Option de xargs. Parfois, vous devrez dire spécifiquement aux xargs pour travailler avec un argument à la fois avec le -n ou -max-args option.

Vous pouvez également ajouter ou appliquer d'autres chaînes aux arguments transmis à la commande Command2 en utilisant le -je Option de xargs.

Il existe de nombreuses autres options de xargs, mais ces 3 sont les plus importants et les plus utiles. Donc, je ne couvrirai que ces 3 arguments Xargs dans cet article.

C'est assez de bavardage. Passons par quelques exemples.

Exemple 1: Création et supprimer des fichiers répertoriés dans un fichier texte

Disons que vous avez une liste de noms de fichiers dans un fichier texte des dossiers.SMS.

Vous pouvez voir le contenu du fichier texte des dossiers.SMS Comme indiqué dans la capture d'écran ci-dessous.

$ Cat Fichiers.SMS

Maintenant, vous pouvez créer tous les fichiers répertoriés dans le des dossiers.SMS Fichier texte à l'aide du touche commander avec xargs comme suit:

$ Cat Fichiers.txt | xargs touch

Comme vous pouvez le voir, les fichiers sont créés comme indiqué dans le des dossiers.SMS.

Maintenant, disons que vous souhaitez supprimer les fichiers qui sont répertoriés dans le des dossiers.SMS fichier texte. Vous pouvez utiliser le RM commander avec xargs comme suit:

$ Cat Fichiers.txt | xargs rm -v

Seuls les fichiers répertoriés dans le des dossiers.SMS Le fichier est supprimé comme vous pouvez le voir dans la capture d'écran ci-dessous.

Ceci est un exemple très simple de xargs.

Exemple 2: Redirigez STDOUT vers les commandes qui ne prennent pas en charge le tuyau

Vous pouvez rediriger le stdout d'une commande commande 1 comme le stdin d'une autre commande Command2 Si commande Command2 prend en charge le tuyau Linux. Mais si la commande ne prend pas en charge le tuyau, vous ne pourrez pas le faire.

Par exemple, le écho La commande ne prend pas en charge le tuyau. Ainsi, la commande suivante n'imprimera rien comme vous pouvez le voir dans la capture d'écran ci-dessous.

$ Date | écho

La commande xargs peut vous aider à rediriger le stdout de commande 1 (dans ce cas date) au stdin de Command2 (dans ce cas écho) Comme vous pouvez le voir dans la capture d'écran ci-dessous.

$ Date | xargs écho

Exemple 3: Modification du délimiteur de xargs

Ici, j'ai imprimé une chaîne 123-456-7890 (un numéro de téléphone factice) à l'aide de xargs. Comme vous pouvez le voir, toute la sortie est traitée comme un seul argument et Xargs exécute le écho commande une seule fois.

$ echo -n 123-456-7890 | xargs écho

Ici, j'ai changé le délimiteur pour - en utilisant le -d Option de xargs. Comme vous pouvez le voir, la sortie 123-456-7890 est maintenant traité comme 3 arguments différents 123, 456, et 7890.

$ echo -n "123-456-789" | xargs -n 1 -d - echo

Exemple 4: Arguments Xargs en ajoutant ou en ajoutant

Vous pouvez ajouter (ajouter à la fin de l'argument) ou représenter (ajouter au front de l'argument) une chaîne à l'argument transmis à la commande Command2 Utilisation de xargs. Avant de vous montrer comment faire cela, je vais vous montrer comment utiliser le -je Option de xargs.

Le -je L'option de xargs vous permet de définir un symbole pour l'argument xargs qui est transmis à la commande Command2. Cela fonctionne comme une variable.

Par exemple,

$ echo -n "123-456-789" | xargs -d - -n 1 -i echo

Ici, -I, l'option définit comme symbole de l'argument sur lequel Xargs travaille actuellement. Une fois le symbole est défini, le symbole peut être utilisé pour transmettre l'argument à la commande Command2, qui (le symbole ) sera remplacé par la valeur de l'argument.

Maintenant, pour ajouter la chaîne .SMS (Disons) à chaque argument, vous pouvez utiliser des xargs comme suit:

$ echo -n "123-456-789" | xargs -d - -n 1 -i echo .SMS

De la même manière, vous pouvez prétendre la chaîne Bonjour (Disons) à chaque argument comme suit:

$ echo -n "123-456-789" | xargs -d - -n 1 -i echo "Hello "

Exemple 5: Modification des extensions de fichiers spécifiques

Celui-ci est un peu délicat. Mais je vais expliquer comment ça marche. Ne t'inquiète pas.

Disons que vous avez des fichiers dans votre répertoire de travail actuel avec différentes extensions de fichiers. Maintenant, vous voulez tous les changer en PNG extension.

Vous pouvez modifier l'extension de fichier de tous les fichiers de votre répertoire de travail actuel en PNG avec xargs comme suit:

$ ls | xargs -i bash -c 'file = && mv -v $ file $ file %%.*.png '

Comme vous pouvez le voir, toute l'extension du fichier a changé en PNG.

Ici, Xargs commence un sous-shell bash et exécute la commande bash

File = && mv -v $ file $ file %%.*.PNG

D'abord, Fichier = attribue le symbole valeur, qui est le nom de fichier (la valeur de l'argument de xargs) au DÉPOSER variable de coquille.

Alors, mv La commande est utilisée pour modifier l'extension de fichier.

Le $ Fichier La variable Shell contient le nom de fichier d'origine.

$ Fichier %%.* supprime l'extension du nom de fichier (y compris . caractère) et puis .PNG La chaîne est ajoutée au nom de fichier dépouillé.

Les xargs peuvent faire des trucs beaucoup plus complexes. Continuez à essayer de nouvelles choses avec xargs. Le ciel est votre limite.

Si vous avez besoin d'aide sur Xargs, vous pouvez vérifier la page de l'homme de Xargs comme suit:

$ man xargs

Alors, c'est ainsi que vous utilisez xargs sur Linux. Merci d'avoir lu cet article.