Как использовать grep для поиска текстовой строки в файлах в подпапках родительской папки без ключа -r

Я использую Solaris 10 и имею две версии grep один в /usr/bin и один в /usr/xpg4/bin . Я искал ответ о том, как искать текст внутри файлов в подпапках родительского каталога, используя grep . Все ответы говорят о -r или -R переключателях, которых у меня нет в моей версии grep .

Стандартный (POSIX) синтаксис:

 find /path/to/parent -type f -exec grep 'XXX' /dev/null {} + 

( /dev/null – убедиться, что grep всегда печатает имя файла). Это будет работать на всех POSIX-системах, включая Solaris. Единственные известные системы после 90-х годов, где, как известно, не работают, являются старыми (очень старыми) системами GNU.

Сначала GNU ввела предикат -print0 и вариант -0 для xargs :

 find /path/to/parent -type f -print0 | xargs -0 grep 'XXX' /dev/null 

В настоящее время существует несколько других реализаций, которые поддерживают это, но не Solaris.

Выше, теоретически, вы хотите добавить параметр -r чтобы избежать запуска grep если нет файла, но это не так переносимо и в данном конкретном случае не делает функциональной разницы