[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[linux-team] find-grep ou grep-find ?
Hello !
Je n'ai pas de question, juste un truc a donner.
Le probleme se pose souvent de faire un grep recursif. Outre des trucs
genre rgrep, agrep, ..., il est possible d'utiliser find. (plus portable
quand vous ne pouvez pas recompiler un soft pour faire un bete grep)
Voyons comment chercher "brol" dans les fichiers *.c et *.h a partir du
repertoire courant et les sous-repertoires.
Permier essai:
find . -name '*.[ch]' -exec grep -i brol {} \;
Resultat: ca marche bien mais on ne voit pas le nom du fichier ou on a trouve.
Pourquoi: Un seul nom de fichier en parametre => pas d'affichage du nom.
find execute la commande pour chaque fichier separement.
Deuxieme essai:
grep -i brol `find . -name '*.[ch] -print`
Resultat: On voit le nom mais (1) on est limite en nombres d'arguments
(eviter les gros repertoires) et (2) il faut attendre la fin du find pour
que le grep commence.
Note: le find est entoure de BACKQUOTES, apostrophes inverses.
Troisieme essai (ce que j'utilise):
find . -name '*.[ch]' -exec grep /dev/null {} \;
Resultat: on a le nom du fichier et le find et le grep fonctionnent en meme
temps.
Pourquoi: grep a 2 arguments dont un ne contient rien (donc pas de
resultat) et affiche donc le nom s'il trouve dans le deuxieme (le notre).
Notes:
- xargs fait sensiblement la meme chose que les backquotes.
- veuillez reagir sur la facon de faire en mail prive, je posterai un
resume sur la ML.
A+
Eric.
---------
Visit the Linux Supertore Online: http://www.redcorp.com !
If you want to be deleted from the list, send a mail to
majordomo@rtfm.be with "unsubscribe linux-team" in the body.
Archive of the list: http://tania.be.linux.org/