besoin d'aide avec les commandes find et grep combinées - Linux et OS Alternatifs
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
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*'
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]
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 {} \;
Marsh Posté le 31-07-2002 à 12:51:22
regrepe avec dada
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)
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'
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).
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
Marsh Posté le 31-07-2002 à 14:20:45
et ca ?
ls -lR > toto; cat toto * | grep dada
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).
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
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.