Есть также:
find directory_name -type f -print0 | xargs -0 grep -li word
но это может быть немного много для новичка.
findявляется каталогом общего назначения walker / lister, -type fозначает «искать простые файлы, а не каталоги и именованные каналы и что у вас есть», -print0означает «выводить их на стандартный вывод, используя нулевые символы в качестве разделителей». Выходные данные от findотправляются xargs -0и получают его стандартный ввод кусками (чтобы избежать ограничений длины командной строки), используя нулевые символы в качестве разделителя записей (а не стандартный перевод строки), и применяются grep -li wordк каждому набору файлов. На grep, -lозначает «список файлов, которые соответствуют» и -iозначает «без учета регистра»; обычно вы можете комбинировать параметры одного символа, чтобы вы видели -liчаще -l -i.
Если вы не используете, -print0и -0тогда у вас возникнут проблемы с именами файлов, которые содержат пробелы, поэтому их использование - хорошая привычка.
*? Это приведет либо к расширению подстановочного знака оболочки (если есть имена файлов, соответствующие шаблону подстановки), либо grep примет его как оператор повторения 0 или более для предшествующего символа*.