OVH Cloud OVH Cloud

find exec et grep

11 réponses
Avatar
Hugolino
Bonjour à tous.

Je cherche une chaine de caractère dans un des 2097 fichiers sous
l'arborescence de /etc de ma Knoppix.

j'ai essayé '/etc # find . -type f -exec grep NET_MASK {} \'
il me présente l'invite '>' et je ne sais pas ce qu'il attend.
Si j'omets le '\' final, j'ai 'find: Paramètre manquant pour `-exec''

J'ai aussi tenté '/etc # find . -type f -exec grep NET_MASK {} -' et
j'ai encore 'find: Paramètre manquant pour `-exec''

Bref, comme toujours, Unix est 'amis avec l'utilisateur', c'est juste
qu'il choisi ses amis et visiblement je n'en fait pas encore partie.

Serait-ce trop demander, en plus de la solution au problème, la
correction ou l'explication des 3 fautes que j'ai commise.

Bien à vous


--
Hugo NPN (i --> ee)
> En plus, question "self esteem", Linux, c'est autre chose ("yeah, j'ai
> réussi à compiler un noyau !"
Moi je le fais faire par gcc -+- MB in GLP "bien configurer son égo" -+-

10 réponses

1 2
Avatar
JustMe
Erwan David wrote:

Hugolino écrivait :


Bonjour à tous.

Je cherche une chaine de caractère dans un des 2097 fichiers sous
l'arborescence de /etc de ma Knoppix.

j'ai essayé '/etc # find . -type f -exec grep NET_MASK {} '
il me présente l'invite '>' et je ne sais pas ce qu'il attend.
Si j'omets le '' final, j'ai 'find: Paramètre manquant pour `-exec''

J'ai aussi tenté '/etc # find . -type f -exec grep NET_MASK {} -' et
j'ai encore 'find: Paramètre manquant pour `-exec''

Bref, comme toujours, Unix est 'amis avec l'utilisateur', c'est juste
qu'il choisi ses amis et visiblement je n'en fait pas encore partie.

Serait-ce trop demander, en plus de la solution au problème, la
correction ou l'explication des 3 fautes que j'ai commise.



man find...

c'est ; qu'il faut à la fin...

Ou plus économes en processus
find . -type f|xargs grep NET_MASK

Qyui en plus te mettra le nom des fichiers qui matchent, parceque dans
ton cas ça ne te mettra pas le nomd u fichier (puisque grep est appelé
avec un seul fichier).


sauf si le xargs se termine avec 1 seul arg et que c'est justement ce
fichier là...

find . -type f | xargs grep NET_MASK /dev/null

marchera ds ts les cas.

mais un "grep -l" evitera des désagrement avec les binaires ;-)






Avatar
Thomas Nemeth
Le mar 18 mai 2004 à 21:49, JustMe a tapoté :
|
| Erwan David wrote:
|
| > Hugolino écrivait :
| >
| >>Je cherche une chaine de caractère dans un des 2097 fichiers sous
| >>l'arborescence de /etc de ma Knoppix.
[...]
| > Ou plus économes en processus
| > find . -type f|xargs grep NET_MASK
| >
| > Qyui en plus te mettra le nom des fichiers qui matchent, parceque dans
| > ton cas ça ne te mettra pas le nomd u fichier (puisque grep est appelé
| > avec un seul fichier).
|
| sauf si le xargs se termine avec 1 seul arg et que c'est justement ce
| fichier là...

Sauf qu'il y a 2097 fichiers. On n'a généralement pas besoin de
faire un find . -type f lorsqu'il n'y a qu'un seul fichier.


Thomas
--
C'est vrai. FreeBSD pourrait être bien s'il avait une licence
correcte.
Oh, mon troll-ô-meter vient d'exploser...

-+- OR in Guide du linuxien pervers - "Bien regler son troll-ô-meter"

Avatar
TiChou
Dans le message <news:40aa6a61$0$30078$,
*Thomas Nemeth* tapota sur f.c.o.unix :

Je cherche une chaine de caractère dans un des 2097 fichiers sous
l'arborescence de /etc de ma Knoppix.
[...]



Ou plus économes en processus
find . -type f|xargs grep NET_MASK

Qyui en plus te mettra le nom des fichiers qui matchent, parceque dans
ton cas ça ne te mettra pas le nomd u fichier (puisque grep est appelé
avec un seul fichier).
|>



|> sauf si le xargs se termine avec 1 seul arg et que c'est justement ce
|> fichier là...

Sauf qu'il y a 2097 fichiers. On n'a généralement pas besoin de
faire un find . -type f lorsqu'il n'y a qu'un seul fichier.


On aurait pu aussi utiliser l'option recursive de la commande grep.
Par exemple :

$ grep -r NET_MASK /etc

ou mieux :

$ grep -r -D skip -s NET_MASK /etc

La syntaxe est plus simple mais question rapidité on y perd.

--
TiChou




Avatar
JustMe
Thomas Nemeth wrote:

Le mar 18 mai 2004 à 21:49, JustMe a tapoté :
|
| Erwan David wrote:
|
| > Hugolino écrivait :
| >
| >>Je cherche une chaine de caractère dans un des 2097 fichiers sous
| >>l'arborescence de /etc de ma Knoppix.
[...]
| > Ou plus économes en processus
| > find . -type f|xargs grep NET_MASK
| >
| > Qyui en plus te mettra le nom des fichiers qui matchent, parceque dans
| > ton cas ça ne te mettra pas le nomd u fichier (puisque grep est appelé
| > avec un seul fichier).
|
| sauf si le xargs se termine avec 1 seul arg et que c'est justement ce
| fichier là...

Sauf qu'il y a 2097 fichiers. On n'a généralement pas besoin de
faire un find . -type f lorsqu'il n'y a qu'un seul fichier.



***se termine***

le but de xargs est de couper en lignes pas trop grandes et tes 2097
fichiers peuvent tres bien conduire à 2096 pour le premier grep puis 1
seul pour le second....

man xargs :-)


Thomas


Avatar
FAb
Thomas Nemeth writes:

| Erwan David wrote:
| > Hugolino écrivait :
[...]

| > Ou plus économes en processus
| > find . -type f|xargs grep NET_MASK


grep -R NET_MASK * 2>/dev/null

Avatar
Thomas Nemeth
Le mar 18 mai 2004 à 22:38, JustMe a tapoté :
|
|
| Thomas Nemeth wrote:
|
| > | sauf si le xargs se termine avec 1 seul arg et que c'est justement ce
| > | fichier là...
| >
| > Sauf qu'il y a 2097 fichiers. On n'a généralement pas besoin de
| > faire un find . -type f lorsqu'il n'y a qu'un seul fichier.
| >
|
| ***se termine***
|
| le but de xargs est de couper en lignes pas trop grandes et tes 2097
| fichiers peuvent tres bien conduire à 2096 pour le premier grep puis 1
| seul pour le second....

bon, je vais m'acheter des yeux et je reviens :)


Thomas
--
Que pensez vous de l'ajout du repertoire point dans $PATH ?
Ma version de troll 18.0.32 beta 3 vient de me faire un core dump.

-+- SE in Guide du Linuxien Pervers : Bien développer son troll -+-

Avatar
Unknown
Le Tue, 18 May 2004 19:16:32 +0000, Hugolino a écrit :

Bonjour à tous.

Je cherche une chaine de caractère dans un des 2097 fichiers sous
l'arborescence de /etc de ma Knoppix.

j'ai essayé '/etc # find . -type f -exec grep NET_MASK {} '
il me présente l'invite '>' et je ne sais pas ce qu'il attend.
Si j'omets le '' final, j'ai 'find: Paramètre manquant pour `-exec''



avec le grep gnu tu peux faire :

grep -irl "TA CHAINE" /etc

il t'affichera la liste des fichiers de /etc qui contiennent "TA CHAINE"

Avatar
Stephane Chazelas
2004-05-18, 22:27(+02), TiChou:
[...]
On aurait pu aussi utiliser l'option recursive de la commande grep.
Par exemple :

$ grep -r NET_MASK /etc

ou mieux :

$ grep -r -D skip -s NET_MASK /etc

La syntaxe est plus simple mais question rapidité on y perd.


Ou encore

grep NET_MASK /etc/**/*(-.L-20000mh-2^*)

pour chercher dans les fichiers reguliers non-executables de
moins de 20000 octets modifiés dans les 2 dernieres semaines

grep NET_MASK /etc/**/*(-.)
pour juste les fichiers reguliers (et liens symboliques vers
fichiers reguliers).

(a condition d'utiliser zsh. Il y a une fonctionnalité similaire
dans les dernieres version de ksh93)

--
Stephane

Avatar
william
On Tue, 18 May 2004 21:16:32 +0200, Hugolino wrote:

Bonjour à tous.

Je cherche une chaine de caractère dans un des 2097 fichiers sous
l'arborescence de /etc de ma Knoppix.


si c'est une knoppix c'est donc gnu grep que tu as.
et dans ce grep il y a une option récursive, ou suis je le seul à en
faire usage ?


--
William.

Avatar
David LE BOURGEOIS

Bonjour à tous.

Je cherche une chaine de caractère dans un des 2097 fichiers sous
l'arborescence de /etc de ma Knoppix.

j'ai essayé '/etc # find . -type f -exec grep NET_MASK {} '
il me présente l'invite '>' et je ne sais pas ce qu'il attend.


Il attend la nouvelle ligne annoncée par .

Si j'omets le '' final, j'ai 'find: Paramètre manquant pour `-exec''


En fait, pour -exec, il s'agit d'un ; pour terminer la saisie de la
commande.


J'ai aussi tenté '/etc # find . -type f -exec grep NET_MASK {} -' et
j'ai encore 'find: Paramètre manquant pour `-exec''


Idem.


Bref, comme toujours, Unix est 'amis avec l'utilisateur', c'est juste
qu'il choisi ses amis et visiblement je n'en fait pas encore partie.

Serait-ce trop demander, en plus de la solution au problème, la
correction ou l'explication des 3 fautes que j'ai commise.


find /etc -type f -print0 | xargs -0 grep NET_MASK


--
David LE BOURGEOIS

1 2