Re: chercher un mot dans le contenu de chaque fichier récursivement dans un repertoire
Le lundi 12 février 2007 à 18:16 +0100, Thierry B a écrit :
> Bonjour,
>
> Comme je vous l'avais dit dans un précédent message, à chaque demarrage
> de kde, il me lance tout seul wengophone, et c'est barbant à la fin.
>
> Et puis bien entendu, dans le logiciel, aucune case pour lui dire qu'il
> ne se lance pas tout seul au demarrage de kde lol...
>
> Donc, je me suis dit qu'une piste serait de voir ou kde, stocke le fait
> qu'il faut le lancer à chaque demarrage de celui-ci.
>
> Mais quand je veux chercher à partir de mon home, l'ensemble des
> fichiers qui contiennent le mot "qtwengophone", ca ne marche pas, mais
> pourtant, il me semblait bien que ma syntaxe est correcte...
>
> $ find . -type f|xargs grep "qtwengophone"
> xargs: guillemets simple non pairés; par défaut les guillemets sont
> particuliers à xargs à moins d'utiliser l'option -O
Étrange, cette commande devrait fonctionner, et elle le fait d'ailleurs
chez moi...
Ma première réaction a été de penser qu'il faudrait utiliser le
paramètre -exec de find:
find . -type f -exec grep "qtwengophone"
mais après essais, j'ai l'impression que ton utilisation est plus
rapide, et ce n'est pas faux. C'est d'ailleurs étonnant, quelqu'un
a-t-il une explication ?
$ time find . -type f | xargs grep "tool"
real 0m26.702s
user 0m1.196s
sys 0m1.392s
$ time find . -type f -exec grep "tool" {} \;
real 0m36.084s
user 0m3.752s
sys 0m6.676s
Mais je te rassure, il y a bien plus simple : grep -r, ou, mieux encore,
rgrep (2 carctères de moins si l'on inclut l'espace)
Un peu plus rapide, mais le gain de temps est surtout appréciable lors
de la saisie de la commande ;-)
$ time rgrep "tool" *
real 0m22.834s
user 0m1.240s
sys 0m1.540s
@++
Julien
PS: tests faits sur 8256 fichiers contenus dans 1792 répertoires, pour
un total de 1.1GB, dans gnome-terminal (avec coloration syntaxique de
grep)
Reply to: