Есть также:
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 или более для предшествующего символа*
.