[gull] Petite question grep
Félix Hauri
felix at f-hauri.ch
Wed Nov 18 17:30:31 CET 2009
On Wed, Nov 18, 2009 at 04:46:20PM +0100, Daniel Cordey wrote:
> Juste pour continuer a rigoler... :-)
>
> grep $(find ...)
>
> est plus rapide que :
>
> find ... -exec grep
>
> Pourquoi ? Parceque dans le deuxieme cas, find efectue un fork/exec pour chaque
> fichier ! Alosr que dans le premier cas, c'est meme process qui ne fait que des
> open/close sur les fichiers de la liste.
Très juste!
De même que tu ne fera qu'un fork en tapant:
find . -type f -print0 | xargs -0 grep -iwZl "expr1" | xargs -0 grep -iwl "expr2"
mais dans ce cas, comme pour ``grep $(find...)'' tu est limité
dans le nombre de fichiers à parcourir (probablement moins avec xargs
que $(), mais dans tous les cas ``-print0|xargs -0'' t'affranchis des
problèmes de noms de fichiers non-conventionnels).
find . -xdev -type f -exec grep -iwq expr1 {} \; -exec grep -iwq expr2 {} \; -print
est la seule syntaxe qui fonctionnera de manière sûre, quelle que soit
le taille des répertoires à parcourir (plus longue, mais efficace).
--
Félix Hauri - <felix at f-hauri.ch> - http://www.f-hauri.ch
More information about the gull
mailing list