Использование grep -r
вслепую на /
не очень хорошая идея. Несколько каталогов (например, /dev
и /proc
) содержат специальные файлы, к которым нельзя обращаться неконтролируемым образом - это может привести к тому, что ваш экран будет просто заполнен ошибками, если вы дождетесь конца света или даже выйдете из строя вашей системы.
Вам нужно использовать find
чтобы предотвратить поиск в этих каталогах и оставить специальные файлы в покое:
Используйте явные опции с отрицательным -path
:
find / -maxdepth 2 -type f ! -path '/proc/*' ! -path '/dev/*' -exec grep "xxx" {} +
Используйте опцию -prune
:
find / -maxdepth 2 -path '/proc' -prune -o -path '/dev' -prune -o -type f -exec grep "xxx" {} +
Используйте параметр -xdev
чтобы избежать полного перехода к другим файловым системам:
find / -maxdepth 2 -xdev -type f -exec grep "xxx" {} +
-type f
пропускает только обычные файлы. Вы можете использовать как много -path
и / или -prune
варианты , как вам нужно точно настроить вывод find
Также обратите внимание на использование -exec ... +
варианта -exec
который вызывает grep
с несколькими файлами, вместо запуска отдельного процесса grep
для каждого из них.
В качестве альтернативы вы можете использовать xargs
для вызова grep
:
find / -maxdepth 2 -xdev -type f -print0 | xargs -r -0 grep "xxx"
Вот мой старый ответ на связанный вопрос ...