Se eu entendi corretamente, é 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 em output.txt
. Se o arquivo contiver alguma coisa, 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á em grep
sendo executado tantas vezes quanto find
encontra ocorrências. No entanto, se você substituir o ;
por um +
, grep
será chamado com a saída de find
concatenada (até um determinado limite). Veja pergunta Usando ponto e vírgula (;) vs mais (+) com exec in find para mais sobre o assunto.