Обычно я использую этот стиль команд для запуска grepнескольких файлов:
find / -xdev -type f -print0 | xargs -0 grep -H "800x600"
На самом деле это составляет список всех файлов в системе, а затем для каждого файла выполняется grepс заданными аргументами и именем каждого файла.
-xdevАргумент говорит находке , что он должен игнорировать другие файловые системы - это хорошо для избежания специальных файловых систем , таких как /proc. Однако он также будет игнорировать обычные файловые системы - поэтому, если, например, ваша папка / home находится в другом разделе, она не будет искать - вам нужно будет сказать find / /home -xdev ....
-type fозначает поиск только файлов, поэтому каталоги, устройства и другие специальные файлы игнорируются (он все равно будет преобразовываться в каталоги и выполняться grepв файлах внутри - он просто не будет выполняться grepв самом каталоге, что в любом случае не будет работать). И -Hопция grepсказать ему всегда печатать имя файла в его выводе.
findпринимает все виды опций для фильтрации списка файлов. Например, -name '*.txt'обрабатывает только файлы, заканчивающиеся на .txt. -size -2Mозначает файлы размером менее 2 мегабайт. -mtime -5означает файлы, измененные за последние пять дней. Объедините их вместе с -a for и и -o for или и используйте '('скобки ')'для группировки выражений (в кавычках, чтобы оболочка не могла их интерпретировать). Так, например:
find / -xdev '(' -type f -a -name '*.txt' -a -size -2M -a -mtime -5 ')' -print0 | xargs -0 grep -H "800x600"
Взгляните, man findчтобы увидеть полный список возможных фильтров.
Permission deniedошибок? Вы запускали его как root или обычный пользователь?