Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | |||
— | xargs [2019/07/04 10:14] – créée crust | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Utiliser xargs [How To Section Shell, ligne de commande] ====== | ||
+ | |||
+ | ===== 1. xargs ===== | ||
+ | |||
+ | La commande **xargs** sous UNIX est un utilitaire de ligne de commande permettant de créer un pipeline d' | ||
+ | Bien que des outils tels que grep puissent accepter l’entrée standard en tant que paramètre, de nombreux autres outils ne le peuvent pas. | ||
+ | L' | ||
+ | |||
+ | |||
+ | ===== 2. Utilisation de base ===== | ||
+ | |||
+ | |||
+ | Exemple : création de 3 répertoires avec xargs | ||
+ | |||
+ | <code bash> | ||
+ | ls | ||
+ | one two three</ | ||
+ | |||
+ | Vous me direz que ça va plus vite en tapant simplement | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | Pas faux, sur ce coup.... Mais vous vous doutez bien qu'on va un peu pousser les choses... | ||
+ | |||
+ | |||
+ | ===== 3. Associer xargs et find : des exemples concrets ===== | ||
+ | |||
+ | |||
+ | ==== 3.1 En gros ==== | ||
+ | |||
+ | On lance **find** (sur le répertoire courant (.) ou dans un répertoire spécifique (/ | ||
+ | Tout simple donc. | ||
+ | A savoir si on joue avec des fichiers ou des répertoires avec des espaces, on passera l' | ||
+ | |||
+ | Bon maintenant que vous savez, je pense qu'il vaut mieux mettre quelques exemples concrets | ||
+ | |||
+ | ==== 3.2 Exemples concrets ==== | ||
+ | |||
+ | |||
+ | Trouver les fichiers temporaires vieux de plus de 14 jours et les supprimer | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | Avancer toutes les dates du répertoire " | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | Ouvrir tous les fichiers trouvés avec gedit | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | |||
+ | Trouver tous les fichiers contenant l' | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | Trouver tous les fichiers png d'une archive tar.gz | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | Connaitre le nombre de lignes, mots, caractères des fichiers d'une liste | ||
+ | |||
+ | <code bash>ls *.txt | xargs wc</ | ||
+ | |||
+ | Effacer des fichiers du répertoire courant (ici les fichiers avec extension .c) | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | Le même si les fichiers contiennent des espaces | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | Le même sur un dossier spécifique | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | Générer une liste compacte des users d'un système | ||
+ | |||
+ | <code bash>cut -d: -f1 < /etc/passwd | sort | xargs echo</ | ||
+ | |||
+ | |||
+ | ===== 4. L' | ||
+ | |||
+ | Il est possible d' | ||
+ | Ceci remplace les occurrences de l' | ||
+ | Les impressions suivantes font écho à une chaîne et créent un dossier. | ||
+ | |||
+ | |||
+ | <code bash>cat test.txt | ||
+ | tata | ||
+ | toto | ||
+ | tutu</ | ||
+ | |||
+ | <code bash>cat test.txt | xargs -I % sh -c 'echo %; mkdir %' | ||
+ | tata | ||
+ | toto | ||
+ | tutu</ | ||
+ | <code bash> | ||
+ | ls | ||
+ | tata toto tutu</ | ||
+ | |||
+ | |||
+ | ===== 5. L' | ||
+ | |||
+ | Cette options (**-t**) permet l' | ||
+ | |||
+ | <code bash> | ||
+ | rm one two three</ | ||
+ | |||
+ | |||
+ | |||
+ | ===== 6. exec VS xargs ===== | ||
+ | |||
+ | On retrouve les mêmes fonctionnalités " | ||
+ | Mais les tests effectués sur de grosses quantités de fichiers montrent que l' | ||
+ | |||
+ | Exemple sur plus de 1 500 images | ||
+ | |||
+ | <code bash> | ||
+ | real 0m6.618s | ||
+ | user 0m1.465s | ||
+ | sys | ||
+ | |||
+ | <code bash> | ||
+ | real 0m1.120s | ||
+ | user 0m0.594s | ||
+ | sys | ||
+ | |||
+ | Donc on va dire que pour une utilisation simple, xargs va plus vite ;) (attention dans certains cas, il vaut mieux utiliser exec) | ||
+ | |||
+ | |||
+ | ===== 7. Conclusions ===== | ||
+ | |||
+ | Bon voilà une commande très puissante | ||
+ | Plus de détail | ||
+ | <code bash> | ||
+ | man xargs | ||
+ | man find | ||
+ | man exec</ |