Se eu entendi direito, é isso que você quer fazer:
find . -name '*.py' -print0 | xargs -0 grep 'something' > output.txt
Find
todos os arquivos com extensão py
, grep
apenas linhas que contêm something
e salvam as linhas output.txt
. Se o arquivo contiver algo, ele será substituído.
Editar: Usando -exec:
find . -name '*.py' -exec grep 'something' {} \; > output.txt
Estou incorporando o comentário de Chris Downs aqui. O comando acima resultará na grep
execução quantas vezes forem find
encontradas as ocorrências. No entanto, se você substituir o ;
por a +
, grep
será chamado com a saída find
concatenada (até um determinado limite). Veja a pergunta Usando ponto-e-vírgula (;) vs mais (+) com exec para encontrar mais informações sobre o assunto.
+
vez de\;
, ele melhorará significativamente o tempo de execução (uma vez que contatenará os argumentos anteriores à execução atéARG_MAX
).