find/-type f -name filename.ext -exec grep -l 'lookingfor' {} +
El uso de un +
para terminar el comando es más eficiente que \;
porque find
envía un lote de archivos a grep
en lugar de enviarlos uno por uno. Esto evita un fork/exec para cada archivo individual que se encuentra.
Hace un tiempo hice algunas pruebas para comparar el rendimiento de xargs
vs vs {} +
{} \;
y me pareció que era más rápido {} +
. Éstos son algunos de mis resultados:
time find . -name "*20090430*" -exec touch {} +
real 0m31.98s
user 0m0.06s
sys 0m0.49s
time find . -name "*20090430*" | xargs touch
real 1m8.81s
user 0m0.13s
sys 0m1.07s
time find . -name "*20090430*" -exec touch {} \;
real 1m42.53s
user 0m0.17s
sys 0m2.42s
Solo agregaría '--color' a' grep', creo que es mucho más fácil ver las cosas. En realidad, me acabo de dar cuenta de que no toma el alias que definí en '.bashrc'. – Alexandre