Eu normalmente uso esse estilo de comando para executar grep em vários arquivos:
find / -xdev -type f -print0 | xargs -0 grep -H "800x600"
O que isso realmente faz é fazer uma lista de todos os arquivos no sistema, e então, para cada arquivo, executar grep com os argumentos dados e o nome de cada arquivo.
O argumento -xdev informa que ele deve ignorar outros sistemas de arquivos - isso é bom para evitar sistemas de arquivos especiais como /proc . No entanto, ele também irá ignorar os sistemas de arquivos normais - portanto, se, por exemplo, sua pasta / home estiver em uma partição diferente, ela não será pesquisada - você precisará informar find / /home -xdev ... .
-type f significa procurar apenas por arquivos, portanto, diretórios, dispositivos e outros arquivos especiais são ignorados (ele ainda vai recorrer a diretórios e executar grep nos arquivos dentro - ele não executará grep no próprio diretório, que não funcionaria de qualquer maneira). E a opção -H para grep diz para sempre imprimir o nome do arquivo em sua saída.
find aceita todos os tipos de opções para filtrar a lista de arquivos. Por exemplo, -name '*.txt' processa apenas arquivos terminados em .txt. -size -2M significa arquivos menores que 2 megabytes. -mtime -5 significa arquivos modificados nos últimos cinco dias. Junte-os junto com -a para e e -o para ou , e use '(' parênteses ')' para agrupar expressões (entre aspas para evitar que o shell as interprete ). Então, por exemplo:
find / -xdev '(' -type f -a -name '*.txt' -a -size -2M -a -mtime -5 ')' -print0 | xargs -0 grep -H "800x600"
Dê uma olhada em man find para ver a lista completa de possíveis filtros.