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.