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  -  <[email protected]>  -  http://www.f-hauri.ch
_______________________________________________
gull mailing list
[email protected]
http://forum.linux-gull.ch/mailman/listinfo/gull

Répondre à