Bem, o caso genérico que funciona com qualquer comando que grava no stdout é usar xargs , que permitirá anexar qualquer número de argumentos da linha de comando ao final de um comando:
$ find … | xargs grep 'search'
Ou para incorporar o comando na sua linha grep com backticks ou $() , que executará o comando e substituirá sua saída:
$ grep 'search' $(find …)
Observe que esses comandos não funcionam se os nomes dos arquivos contiverem espaços em branco ou outros "caracteres estranhos" ( \'" para xargs, \[*? para $(find …) ).
No entanto, no caso específico de find , a capacidade de executar um programa nos argumentos fornecidos é incorporada:
$ find … -exec grep 'search' {} \;
Tudo entre -exec e ; é o comando para executar; {} é substituído pelo nome de arquivo encontrado por find . Isso executará um grep separado para cada arquivo; como grep pode pegar muitos nomes de arquivos e pesquisar todos eles, você pode alterar o ; para + para dizer ao find para passar todos os nomes de arquivos correspondentes para grep de uma só vez:
$ find … -exec grep 'search' {} \+