Использование 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"
Вот мой старый ответ на связанный вопрос ...