besoin d'aide avec les commandes find et grep combinées

besoin d'aide avec les commandes find et grep combinées - Linux et OS Alternatifs

Marsh Posté le 31-07-2002 à 11:27:41    

je voudrais chopper ts les fichiers  qui contiennent les mots "dada" et (et non pas ou) "toto" par exemple et qui se trouvent ds le rép courant et ses ss répertoires.
 
Merci, j'arrive juste ds le monde unix et j'en ch... un peu.
 
Pr le moment j'ai choppé les fichiers qui contiennent l'un ou l'autre mais pas les deux.

Reply

Marsh Posté le 31-07-2002 à 11:27:41   

Reply

Marsh Posté le 31-07-2002 à 11:35:50    

tu peux greper 'dada' et greper ensuite 'toto' sur les résultats du premier grep:
 
ls -lR | grep dada | grep toto
 
(ls -lR n'est p-ê pas ce qu'il y a de plus indiqué mais c'est un ex.)
 
edit: qui contiennent... oops, l'ex. te donne les fichiers qui se nomment avec dada et toto


Message édité par TBone le 31-07-2002 à 11:36:55

---------------
A straight line is a special case of a curve. It's a curve which is uncurved. -- Susskind.
Reply

Marsh Posté le 31-07-2002 à 11:36:09    

svp j'en chie

Reply

Marsh Posté le 31-07-2002 à 11:37:14    

ok je vais essayer

Reply

Marsh Posté le 31-07-2002 à 11:56:20    

un truc à la limte un poal mieux :
find . -name '*dada*' | grep toto
 
ou si tu connais l'ordre des mots 'dada' et 'toto', tu combines les deux en mettant par exemple:
find . -name '*toto*dada*'


---------------
Ne remets pas à demain ce que tu peux faire après-demain ! :sol:
Reply

Marsh Posté le 31-07-2002 à 12:24:01    

Je me suis peut etre mal exprimé, mais ce que je veux c connaitre le nom des fichiers (.h et .c en l'occurence) qui CONTIENNENT toto et dada par ex.
 
pr le moment j'arrive à chopper ceux qui contiennet un seul truc:
 
 
find . -name *.[ch] -exec grep -l toto {} \; [g]

Reply

Marsh Posté le 31-07-2002 à 12:25:38    

merde le [g] à loa fin ca n'y est pas, c la mise en gras qui a fait ca, la commande c:
 
 
find . -name *.[ch] -exec grep -l toto {} \;
 
 
 :pt1cable:

Reply

Marsh Posté le 31-07-2002 à 12:51:22    

regrepe avec dada


---------------
A straight line is a special case of a curve. It's a curve which is uncurved. -- Susskind.
Reply

Marsh Posté le 31-07-2002 à 13:16:08    

Je comprends bien ki faut refaire un grep avec dada mais j'y arrive pas
 
find . -name *.[ch] -exec grep -l toto {}| grep -l dada {} \;
 
ça par ex ça marche pas, tt ce q g essayé ca marche pas. (mettre +sieurs exec non plus)

Reply

Marsh Posté le 31-07-2002 à 14:07:18    

falip a écrit a écrit :

Je comprends bien ki faut refaire un grep avec dada mais j'y arrive pas
 
find . -name *.[ch] -exec grep -l toto {}| grep -l dada {} \;
 
ça par ex ça marche pas, tt ce q g essayé ca marche pas. (mettre +sieurs exec non plus)  




 
 
tu te complique inutilement je pense
ce que t'as fait c'est équivalent à :
find . -name \*.[ch] | grep toto
 
par contre, je sais pas comment lui dire de ne faire ça que sur le nom du fichier, et nom pas sur le chemin absolu ... faudrait p-t utiliser 'cut'

Reply

Marsh Posté le 31-07-2002 à 14:07:18   

Reply

Marsh Posté le 31-07-2002 à 14:11:14    

djoh a écrit a écrit :

par contre, je sais pas comment lui dire de ne faire ça que sur le nom du fichier, et nom pas sur le chemin absolu ... faudrait p-t utiliser 'cut'



Commande basename non? Et à mon avis il veut connaître les fichiers où dedans (style quand tu fais un vi) ya toto & tata (pas uniquement dans le nom du fichier).


Message édité par teagle le 31-07-2002 à 14:11:55
Reply

Marsh Posté le 31-07-2002 à 14:16:33    

et ca c'est une connerie?
 
ls -lR | cat | grep dada
 
ouais non j'memporte un peu le cat c'est pas top


Message édité par Robinmasters le 31-07-2002 à 14:18:14

---------------
-Hassan Cehef --> C'est possible -Roberttripoux --> Les bons comptes font les bons amis
Reply

Marsh Posté le 31-07-2002 à 14:20:45    

et ca ?
 
ls -lR > toto; cat toto * | grep dada


---------------
-Hassan Cehef --> C'est possible -Roberttripoux --> Les bons comptes font les bons amis
Reply

Marsh Posté le 31-07-2002 à 14:22:21    

Oui, car il ne cherche pas des fichiers qui s'appellent toto_dada.c, mais des fichiers qui contiennent la chaîne "toto" et la chaîne "dada".
 
Mais comme c'est dit plus haut, il suffit de sortir la liste des fichiers contenant l'un des termes, puis de faire une recherche dans ces fichiers sur l'autre terme. Simple, quoi.
 
Sinon, comme ça a l'air d'être des sources, il y a Source-Navigator (à télécharger siu le site de RedHat) qui est pas mal pour naviguer dans des sources (permet de trouver où sont déclarées les macros, etc).

Reply

Marsh Posté le 31-07-2002 à 14:29:18    

ah merde, j'avais compris qu'il cherchait le NOM des fichiers contenant toto et data et non pas le nom des FICHIERS contenant toto et data
 
autant pour moi  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed