[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