Provided by:
manpages-fr-extra_20101103_all 
NOM
xargs - Construire et executer des lignes de commandes a partir de
l'entree standard
SYNOPSIS
xargs -0prtx] [-E cha^ine-fin-de-fichier] [-e[cha^ine-fin-de-fichier]]
[--eof[=cha^ine-fin-de-fichier]] [--null] [-d d'elimiteur] [--delimiter
d'elimiteur] [-I cha^ine-remplacement] [-i[cha^ine-remplacement]]
[--replace[=cha^ine-remplacement]] [-l[nombre-max-lignes]] [-L
nombre-max-lignes] [--max-lines[=nombre-max-lignes]] [-n
nombre-max-params] [--max-args=nombre-max-params] [-s
nombre-max-caract`eres] [--max-chars=nombre-max-caract`eres] [-P
nombre-max-procs] [--max-procs=nombre-max-procs] [--interactive]
[--verbose] [--exit] [--no-run-if-empty] [--arg-file=fichier]
[--show-limits] [--version] [--help] [commande [param`etres_initiaux]]
DESCRIPTION
Cette page de manuel documente la version GNU de xargs. xargs lit des
elements delimites par des blancs (pouvant etre proteges par des
apostrophes, des guillemets ou un antislash) ou par des sauts de ligne
depuis l'entree standard, et execute une ou plusieurs fois la commande
(/bin/echo par defaut) en utilisant les param`etres_initiaux suivis des
parametres lus depuis l'entree standard. Les lignes blanches en entree
sont ignorees.
Parce que les noms de fichiers Unix peuvent comporter des blancs et des
caracteres de saut de ligne, ce comportement par defaut pose souvent
des problemes ; les noms de fichiers qui comportent des blancs et/ou
des caracteres de saut de ligne sont traites de maniere incorrecte par
xargs. Dans ces situations, il est preferable d'utiliser l'option -0
qui permet d'eviter ce genre de problemes. Lorsque l'on utilise cette
option, il faut s'assurer que le programme qui produit l'entree pour
xargs utilise aussi un caractere nul comme separateur. Si ce programme
est GNU find par exemple, l'option -print0 le fera pour vous.
Si l'appel de la commande se termine avec un code d'etat 255, xargs
s'arretera immediatement sans lire davantage les parametres d'entree.
Si cela se produit, un message d'erreur est emis vers la sortie
d'erreur standard (stderr).
OPTIONS
--arg-file=fichier
-a fichier
Lire les donnees depuis fichier plutot que depuis l'entree
standard. Si vous utilisez cette option, stdin restera inchangee
lors de l'execution de la commande. Sinon, stdin est redirigee
depuis /dev/null.
--null
-0 Les noms des fichiers d'entree sont termines par un caractere
nul au lieu d'une espace blanche, et les apostrophes, guillemets
et antislashs n'ont pas de signification particuliere (chaque
caractere est utilise litteralement). Desactive la chaine de fin
de fichier, qui est traitee comme tout autre parametre. Utile
quand des arguments sont susceptibles de contenir des espaces
blanches, des marques de protection ou des antislashs. L'option
-print0 de GNU find produit une sortie convenant a ce mode.
--delimiter=d'elimiteur
-d d'elimiteur
Les elements en entree sont termines par le caractere indique.
Les apostrophes, les antislashs n'ont pas de signification
particuliere ; chaque caractere en entree est pris
litteralement. Desactive la chaine de fin de fichier qui est
traitee comme n'importe quel autre parametre. Ceci peut etre
utilise lorsque l'entree ne consiste qu'en des elements
simplement separes par un caractere de saut de ligne, bien qu'il
soit la plupart du temps preferable de concevoir votre programme
de facon a ce qu'il utilise --null lorsque c'est possible. Le
separateur indique peut etre un caractere unique, un caractere
de despecification de style C tel que \n, ou un code de
despecification octal ou hexadecimal. Les codes de
despecification octaux ou hexadecimaux sont interpretes de la
meme maniere qu'avec la commande printf. Les caracteres
multi-octet ne sont pas geres.
-E cha^ine-fin-de-fichier
Definir la chaine de fin de fichier a cha^ine-fin-de-fichier. Si
la chaine de fin de fichier se trouve dans une ligne d'entree,
le reste de l'entree est ignore. Si on n'utilise ni -E ni -e, on
n'utilise aucune chaine de fin de fichier.
--eof[=cha^ine-fin-de-fichier]
-e[cha^ine-fin-de-fichier]
Cette option est un synonyme de l'option -E. Utiliser de
preference -E parce qu'elle est conforme a la norme POSIX alors
que cette option ne l'est pas. Si cha^ine-fin-de-fichier est
omis, il n'existe pas de chaine de fin de fichier. Si aucune des
options -E et -e n'est utilisee, aucune chaine de fin de fichier
n'est utilisee.
--help Afficher un resume des options de xargs et quitter.
-I cha^ine-remplacement
Remplacer les occurrences de cha^ine-remplacement dans les
parametres initiaux par les noms lus sur l'entree standard. Dans
ce cas, les blancs non proteges ne sont pas consideres comme
terminant les items en entree. Implique -x et -L 1.
--replace[=cha^ine-remplacement]
-i[cha^ine-remplacement]
Cette option est un synonyme de -Ireplace-str si
cha^ine-remplacement est indiquee et de -I{} sinon. Cette option
est obsolete ; veuillez utiliser -I a la place.
-L nombre_max_lignes
Utiliser au plus nombre-max-lignes lignes non vides par ligne de
commande. Des blancs en fin de ligne permettent a une ligne
logique de se poursuivre sur la ligne suivante. Implique -x.
--max-lines[=nombre_max_lignes]
-l[nombre_max_lignes]
Synonyme de l'option -L. A l'inverse de -L, le parametre
nombre-max-lignes est optionnel. Le parametre nombre-max-lignes
vaut 1 par defaut s'il n'est pas indique. L'option -l est
obsolete depuis qu'il a ete remplace par -L dans la norme POSIX.
--max-args=nombre-max-param
-n nombre-max-param
Utiliser au plus nombre-max-param parametres par ligne de
commande. Un nombre de parametres inferieur a nombre-max-param
sera utilise si la taille (consultez l'option -s) est depassee,
a moins que l'option -x ne soit indiquee, auquel cas xargs se
terminera.
--interactive
-p Demander a l'utilisateur s'il faut executer chaque ligne de
commande et lire une ligne a partir du terminal. N'executer la
commande que si la reponse commence par << y >> ou << Y >>.
Implique -t.
--no-run-if-empty
-r Si l'entree standard ne contient aucun caractere non blanc, ne
pas executer la commande. Normalement, la commande est executee
une fois meme s'il n'y a pas d'entree. Cette option est une
extension GNU.
--max-chars=nombre-max-caract`eres
-s nombre-max-caract`eres
Utiliser au plus nombre-max-caract`eres caracteres par ligne de
commande, ce qui inclut la commande et les parametres initiaux,
ainsi que les caracteres nuls de terminaison des chaines passees
en parametres. La valeur maximale autorisee depend du systeme,
et est calculee d'apres la taille limite pour exec, moins la
taille de l'environnement, moins 2048 octets pour les entetes.
Si cette valeur depasse 128 Kio, la valeur par defaut sera
128 Kio ; dans les autres cas, la valeur par defaut correspondra
au maximum (1 Kio vaut 1024 octets).
--verbose
-t Afficher la ligne de commande sur la sortie d'erreur standard
avant de l'executer.
--version
Afficher le numero de version de xargs et quitter.
--show-limits
Afficher les limites de la longueur de la ligne de commande
telle qu'imposee par le systeme d'exploitation, le choix dans
xargs de la taille du tampon et l'option -s. Redirigez /dev/null
dans l'entree (en indiquant eventuellement --no-run-if-empty) si
vous voulez qu'xargs ne fasse rien.
--exit
-x Se terminer si la taille (voyez l'option -s) est depassee.
--max-procs=nombre-max-procs
-P nombre-max-procs
Executer jusqu'a nombre-max-procs processus simultanement (1 par
defaut). Si nombre-max-procs vaut 0, xargs executera
simultanement autant de processus que possible. Utilisez
l'option -n avec -P ; sinon, il est fort possible qu'un seul
exec soit effectue.
EXEMPLES
find /tmp -name noyau -type f -print | xargs /bin/rm -f
Chercher les fichiers dont le nom est noyau dans le repertoire /tmp et
ses sous-repertoires, et les effacer. Rappelez-vous que vous pouvez
rencontrer des problemes si des noms de fichiers comportent des retours
a la ligne ou des espaces.
find /tmp -name noyau -type f -print0 | xargs -0 /bin/rm -f
Chercher les fichiers qui s'appellent noyau dans le repertoire /tmp et
ses sous-repertoires, puis les effacer, en veillant a ce que les noms
de fichiers ou de repertoires qui contiennent des retours a la ligne ou
des espaces soient correctement traites.
find /tmp -depth -name noyau -type f -delete
Rechercher les fichiers nommes noyau dans ou a l'interieur du
repertoire /tmp et les effacer, mais de facon plus efficace que dans
l'exemple precedent (puisqu'on evite l'appel a fork(2) et exec(2) pour
lancer rm, et que nous n'avons plus besoin du processus supplementaire
xargs).
cut -d: -f1 < /etc/passwd | sort | xargs echo
Cree une liste compacte de tous les utilisateurs sur le systeme.
xargs sh -c 'emacs "$@" < /dev/tty' emacs
Lance le nombre minimum de copie d'Emacs necessaire a l'edition
successives des fichiers listes sur l'entree standard de xargs. Cet
exemple produit le meme resultat que l'option -o de BSD, mais d'une
maniere plus flexible et portable.
VALEURS DE RETOUR
xargs se termine avec le code de retour suivant :
0 s'il reussit
123 si une invocation de la commande s'est terminee avec une
valeur de retour comprise entre 1 et 125
124 si la commande s'est terminee avec une valeur de retour
de 255
125 si la commande a ete tuee par un signal
126 si la commande ne peut etre executee
127 si la commande n'a pas ete trouvee
1 si une autre erreur s'est produite.
Les codes de retour superieurs a 128 sont utilises par l'interpreteur
de commandes pour indiquer une fin de programme due a un signal fatal.
CONFORMIT'E AUX STANDARDS
Depuis la version 4.2.9 de GNU xargs, le comportement par defaut de
xargs est de ne pas avoir de marqueur logique de fin de fichier. La
norme POSIX (IEEE Std 1003.1, 2004 Edition) le permet.
Les options -l et -i sont apparues dans la version de la norme POSIX de
1997, mais n'apparaissent plus dans la version 2004 de la norme. Vous
devriez donc utiliser respectivement -L et -I, a la place.
Le standard POSIX permet des implementations dans lesquels il existe
une limite sur la taille des parametres fournis aux fonctions exec. La
limite basse de cette taille est de 4096 octets, en incluant la taille
de l'environnement. Les scripts ne doivent pas compter sur une taille
superieure afin d'etre portables. Toutefois, je ne connais aucune
implementation actuelle dans laquelle la limite est aussi basse.
L'option --show-limits peut vous permettre de connaitre les limites
actuelles de votre systeme.
VOIR AUSSI
find(1), locate(1), locatedb(5), updatedb(1),fork(2), execvp(3),
Finding Files (en ligne dans Info, ou en version imprimee)
BOGUES
L'option -L est incompatible avec l'option -I, mais elle ne le devrait
peut-etre pas.
Il n'est pas possible d'utiliser xargs de maniere sure, car il y aura
toujours un intervalle de temps entre la production de la liste de
fichiers en entree et leur utilisation dans les commandes produites par
xargs. Si d'autres utilisateurs ont acces au systeme, ils peuvent
manipuler le systeme de fichiers pendant cet intervalle de temps de
facon a forcer les actions des commandes lancees par xargs a s'executer
sur des fichiers non voulus. Pour une discussion plus detaillee sur ce
sujet et d'autres problemes qui y sont lies, veuillez consulter le
chapitre <<\ Security Considerations\ >> dans la documentation Texinfo
de findutils. L'option -execdir de find peut souvent etre utilise comme
alternative plus sure.
Lorsque vous utilisez l'option -I, chaque ligne lue depuis l'entree est
mise en tampon en interne. Ceci signifie qu'il y a une limite maximum
pour la longueur de la ligne que xargs peut accepter en entree
lorsqu'il est utilise avec l'option -I. Pour contourner cette
limitation, vous pouvez utiliser l'option -s pour augmenter la taille
du tampon utilise par xargs, et vous pouvez aussi utiliser un appel
supplementaire a xargs afin de vous assurer qu'il n'y a pas de ligne
trop longue. Par exemple :
une_commande | xargs -s 50000 echo | xargs -I '{}' -s 100000 rm '{}'
Ici, le premier appel a xargs n'a pas de limite de longueur pour la
ligne d'entree parce que l'option -i n'est pas utilisee. Le deuxieme
appel a xargs comporte une telle limitation, mais nous nous sommes
assure qu'il ne lui serait jamais soumis une ligne plus longue que ce
qu'il sait traiter. Ce n'est pas une solution parfaite. Il vaudrait
mieux que l'option -i n'impose pas de limite a la taille de la ligne,
c'est pourquoi cette discussion apparait dans la section BOGUES. Le
probleme ne se produit pas avec la sortie de find(1) parce qu'il ne
produit qu'un seul nom de fichier par ligne.
La meilleure maniere de signaler un bogue est d'utiliser le formulaire
sur http://savannah.gnu.org/bugs/?group=findutils. Vous pourrez ainsi
suivre l'evolution de la resolution de votre probleme. Les autres
commentaires concernant xargs(1) et le paquet findutils en general
peuvent etre envoye a la liste de diffusion bug-findutils. Pour vous
abonner a cette liste, veuillez envoyer un courriel a
bug-findutils-request@gnu.org.
TRADUCTION
Cette page de manuel a ete traduite par Frederic Delanoy <delanoy_f AT
yahoo DOT com> en 2002. La version presente dans Debian est dorenavant
maintenue par Jean-Luc Coulon (f5ibh) <jean-luc DOT coulon AT wanadoo
DOT fr> et les membres de la liste <debian-l10n-french AT lists DOT
debian DOT org>. Veuillez signaler toute erreur de traduction par un
rapport de bogue sur le paquet manpages-fr-extra.
XARGS(1)