Normalmente uso este estilo de comando para ejecutar grepvarios archivos:
find / -xdev -type f -print0 | xargs -0 grep -H "800x600"
Lo que esto realmente hace es hacer una lista de cada archivo en el sistema, y luego para cada archivo, ejecutar grepcon los argumentos dados y el nombre de cada archivo.
El -xdevargumento dice encontrar que debe ignorar otros sistemas de archivos; esto es bueno para evitar sistemas de archivos especiales como /proc. Sin embargo, también ignorará los sistemas de archivos normales, por lo que si, por ejemplo, su carpeta / home está en una partición diferente, no se buscará, debería decir find / /home -xdev ....
-type fsignifica buscar solo archivos, por lo que se ignoran los directorios, dispositivos y otros archivos especiales (aún se repetirá en los directorios y se ejecutará grepen los archivos internos; simplemente no se ejecutará grepen el directorio en sí, lo que no funcionaría de todos modos). Y la -Hopción greple dice que siempre imprima el nombre del archivo en su salida.
findacepta todo tipo de opciones para filtrar la lista de archivos. Por ejemplo, -name '*.txt'procesa solo archivos que terminan en .txt. -size -2Msignifica archivos que son más pequeños que 2 megabytes. -mtime -5significa archivos modificados en los últimos cinco días. Une estos con -a for y y -o for or , y usa '('paréntesis ')'para agrupar expresiones (entre comillas para evitar que el shell las interprete). Así por ejemplo:
find / -xdev '(' -type f -a -name '*.txt' -a -size -2M -a -mtime -5 ')' -print0 | xargs -0 grep -H "800x600"
Echa un vistazo man findpara ver la lista completa de posibles filtros.
Permission deniederrores? ¿Lo ejecutaste como root o como un usuario normal?