Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Commande xargs?
Envoyé par: Sil

Dans un devoir je dois dire comment, à l'aide de la commande find, je peux chercher tous les fichiers qui ont l'extension .h et qui se situent dans /usr/include.

Je pense que c'est un truc du genre : find /usr/include -name *.h

Mais ensuite ils me disent d'afficher tous les fichiers trouvés sous forme d'une liste d'arguments avec xargs. Mais il se trouve que je n'arrive pas à comprende comment xargs fonctionne (j'ai regardé le man et le --help).

Pour finir on me demande de n'afficher que les fichiers contenant un certain texte à l'aide de la commande grep. Ca je saurai peut-être faire mais j'aurai peut-être besoin d'aide.
Merci.

Poste le Monday 2 February 2004 09:24:31
Répondre     Citer    
Re: Commande xargs?
Envoyé par: Sil

Evidemment, à chaque fois, on me demande de compléter la commande précédente en ajoutant des trucs. Par exemple, je dois rajouter xargs à la ligne "find /usr/include -name *.h" mais quand j'essaye avec des choses du genre find /usr/include -name *.h | xargs.... ça a pas trop l'air de marcher. Pourtant, c'est bien comme ça qu'on fait s'exécuter plusieurs commandes non?
Désolé mais je débute un peu pour les commandes dans le shell.

Poste le Monday 2 February 2004 09:30:58
Répondre     Citer    
Re: Commande xargs?
Envoyé par: ct

xargs permet de construire le arguments d'une commande

find /usr/include -name "*".h|xargs ls -l

moi je prefère utiliser :
find /usr/include -name "*".h -exec ls -l {} \;

salut

Poste le Monday 2 February 2004 09:40:03
Répondre     Citer    
Re: Commande xargs?
Envoyé par: Sil

Merci beaucoup, ça fonctionne. Par contre, pour ma dernière question, j'ai essayé :
find /usr/include -name "*".h | xargs ls -l | grep "#define"
et ça ne me sort rien alors que j'ai regardé et il y a bien des fichiers .h contenant #define. Comment ça se fait? J'ai regardé et grep s'utilise bien comme ça (ou en précisant le nom du fichier mais là je ne peux pas le préciser vu que je ne le connais pas).

Poste le Monday 2 February 2004 09:52:48
Répondre     Citer    
Re: Commande xargs?
Envoyé par: ct

grep recherche ici la chaine "#define" mais dans les noms de fichiers (puisque le find retourne une liste de noms)

tu peux faire :


find . -name "*".h|xargs cat|grep "#define"

ou bien
find . -name "*".h -exec grep "#define" {} \;

Poste le Monday 2 February 2004 10:41:56
Répondre     Citer    
Re: Commande xargs?
Envoyé par: Sil

Ca marche mais ça me sort la ligne où se trouve #define et je voudrais que soit afficher le nom des fichiers qui contiennent "#define". J'ai essayé

find /usr/include -name *.h | xargs ls -l | grep "#define"

mais ça ne fonctionne pas.

Poste le Monday 2 February 2004 12:12:32
Répondre     Citer    
Re: Commande xargs?
Envoyé par: ct

man grep ..... option -l ...

find . -name "*".h -exec grep -l "#define" {} \;


find . -name "*".h|xargs grep -l "#define"

Poste le Monday 2 February 2004 14:43:00
Répondre     Citer    
Re: Commande xargs?
Envoyé par: Sil

Merci beaucoup, ça marche impec.

Poste le Monday 2 February 2004 14:58:11
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Commande xargs?
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons