Поиск по сайту:

Как найти определенную строку или слово в файлах и каталогах


Хотите ли вы найти все файлы, содержащие определенное слово или строку текста, во всей вашей системе Linux или в определенном каталоге? В этой статье вы узнаете, как это сделать: вы узнаете, как рекурсивно копаться в каталогах, чтобы найти и составить список всех файлов, содержащих заданную текстовую строку.

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

Читайте также: 11 расширенных команд Linux ‘Grep’ для классов символов и выражений в скобках

Команда ниже выведет список всех файлов, содержащих строку с текстом «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'

Вот и все! Если вы знаете какой-либо другой прием командной строки для поиска строки или слова в файлах, поделитесь с нами или задайте какие-либо вопросы по этой теме, воспользуйтесь формой комментариев ниже.