Вы хотите найти все файлы, которые содержат определенное слово или строку текста во всей вашей системе Linux или в заданной директории.

В этой статье вы узнаете, как это сделать, вы узнаете, как рекурсивно выкапывать каталоги, чтобы найти и перечислить все файлы, содержащие заданную строку текста.

Простой способ справиться с этим – с помощью инструмента поиска шаблонов grep – мощная, эффективная, надежная и самая популярная утилита командной строки для поиска шаблонов и слов из файлов или каталогов в Unix-подобных системах.

В приведенной ниже команде перечислены все файлы, содержащие строку с текстом «check_root», путем рекурсивного и активного поиска в каталоге ~ / bin.

$ grep -Rw ~/bin/ -e 'check_root'

Где параметр -R указывает grep читать все файлы под каждым каталогом, рекурсивно, следуя символическим ссылкам только в том случае, если они находятся в командной строке, а параметр -w указывает, что он выбирает только те строки, содержащие совпадения, которые образуют целые слова, а -e – используется для указания строки (шаблона) для поиска.

Вы должны использовать команду sudo при поиске определенных каталогов или файлов, требующих прав root (если вы не управляете своей системой с учетной записью root).

$ sudo grep -Rw / -e 'check_root'	

Чтобы игнорировать, используйте параметр -i, как показано ниже:

$ grep -Riw ~/bin/ -e 'check_root'

Если вы хотите узнать точную строку, где существует строка текста, включите опцию -n.

$ grep -Rinw ~/bin/ -e 'check_root'

Предполагая, что в каталоге, в котором вы хотите выполнить поиск, есть несколько типов файлов, вы также можете указать тип файлов для поиска, например, их расширением, используя параметр -include.

В этом примере grep просматривает только все .sh-файлы.

$ grep -Rnw --include=\*.sh ~/bin/ -e 'check_root'

Кроме того, можно найти несколько шаблонов, используя следующую команд:

$ grep -Rinw ~/bin/ -e 'check_root' -e 'netstat'

 

Поделитесь статьей:

Добавить комментарий