Si te entiendo correctamente, esto es lo que quieres hacer:
find . -name '*.py' -print0 | xargs -0 grep 'something' > output.txt
Find
todos los archivos con extensión py
, grep
solo las filas que contienen something
y guardan las filas output.txt
. Si el archivo contiene algo, será reemplazado.
Editar: Usando -exec:
find . -name '*.py' -exec grep 'something' {} \; > output.txt
Estoy incorporando el comentario de Chris Downs aquí. El comando anterior dará como resultado que grep
se ejecute tantas veces como find
encuentre ocurrencias. Sin embargo, si reemplaza el ;
con a +
, grep
se llama con la salida de find
concatenado (hasta cierto límite). Vea la pregunta Usando punto y coma (;) vs plus (+) con exec en find para más información sobre el tema.
+
lugar de\;
mejorará significativamente el tiempo de ejecución (ya que contaminará los argumentos antes de la ejecución hastaARG_MAX
).