По умолчанию большинство инструментов поиска просматривают имена файлов, а не их содержимое. Однако самая известная программа поиска GNU, grep
, будет просматривать файлы с правильными флагами. Здесь мы покажем вам, как найти определенные слова в файле в Linux.
Также читайте: Как найти большие файлы в Linux
Использование grep для поиска определенного слова в файле
По умолчанию grep выполняет поиск по содержимому файлов, а также по их именам. Он включен в большинство систем Linux и, как правило, одинаков во всех дистрибутивах. Программисты, просматрив
Contents
Использование grep для поиска определенного слова в файле
ь другую команду, напримерack
.
В зависимости от того, как закодирован файл, grep
не всегда может заглянуть внутрь. Но для большинства текстовых форматов grep
может сканировать текст файла по указанному шаблону.
grep -rw '/path/to/search/' -e 'pattern'
- Флаг
-r
переводит grep в рекурсивный режим, перемещаясь по всем каталогам, содержащимся в указанном каталоге. - Флаг
-w
ищет совпадения целых слов. Это означает, что слово «красный» будет соответствовать только самому слову «красный», а не любой строке букв, содержащей его, например «redundant» или «tired». Для этого он ищет только «красный цвет», окруженный так называемыми символами, не входящими в состав слов(т. е. всем, что не является буквой, цифрой или подчеркиванием). - Флаг
-e
ставится перед шаблоном поиска. По умолчанию он поддерживает регулярные выражения.
Чтобы ускорить grep, вы можете использовать флаги --exclude
и --include
, чтобы ограничить поиск определенными типами файлов. Например, --exclude='*.csv'
не будет выполнять поиск в файлах с расширением.csv. С другой стороны, --include='*.txt'
будет выполнять поиск только в файлах с расширением.txt. Флаг можно добавить сразу после команды grep, как показано ниже:
grep --exclude='*.csv' -Rw '/path/to/search' -e 'pattern'
Вы также можете исключить определенные каталоги, следуя приведенному ниже формату:
grep --exclude-dir='{dir1,dir2,*_old}' -Rw '/path/to/search' -e 'pattern'
Эта команда не будет выполнять поиск ни в каких каталогах в текущем рабочем каталоге с именами dir1, dir2 или совпадающими с шаблоном *_old, исключая их из процесса поиска. Он выполнит указанный рекурсивный поиск по полному слову во всех остальных файлах в текущем рабочем каталоге.
Интересные флаги, которые можно использовать с grep
Теперь, когда вы должным образом ознакомились с grep и тем, как он работает, вот несколько полезных флагов, которые вы можете прикрепить к своей команде:
-i
— заставляет grep выполнять поиск без учета регистра. Например, поиск по запросу «Kraken» вернет результат, когда grep найдет совпадения с «kraken» или «kRaken».-n
– показывать номера строк рядом с совпадениями. Это особенно полезно для программистов или людей, просматривающих большие файлы конфигурации.-R
– Как и-r
, grep будет выполнять рекурсивный поиск по всем подпапкам, но этот конкретный флаг будет следовать за символическими ссылками (ярлыками).-s
— подавляет сообщения об ошибках. Если вы получаете много отвлекающих ошибок о файлах, которые не существуют, не могут быть прочитаны или имеют неподходящие разрешения, передайте это, чтобы grep мог продолжать показывать вам найденные совпадения.
Также читайте: Как найти файл в Linux с помощью команды «Найти»
Использование find для поиска определенного слова в файле
Хотя синтаксис команды find
сложнее, чем у grep, некоторые предпочитают его.
find . -name "*.php" -exec grep "pattern" {} ;
Эта команда будет использовать флаг -exec
команды find для передачи найденных файлов в grep для поиска. Благодаря продуманному синтаксису вы можете использовать более быстрый поиск в файловой системе find
, чтобы найти конкретные типы файлов, в которых вы хотите выполнить поиск, а затем передать их в grep
для поиск внутри файлов.
Обратите внимание, что find
просматривает только имена файлов, а не их содержимое. Вот почему grep необходим для поиска текста и содержимого файла. Обычные флаги grep должны быть полностью работоспособны внутри флага -exec
.
Использование ack для поиска определенного слова в файле
команда подтверждения , вероятно, самый быстрый инструмент поиска, но он не так популярен, как grep
. Команда ниже выполнит поиск в текущем каталоге.
ack 'pattern'
Если вы хотите выполнить поиск в определенном файле или каталоге, вы можете добавить этот файл или полное имя пути к вашему поиску.
ack 'pattern' /path/to/file.txt
Читайте также: Как устанавливать версии Python и управлять ими в Linux
Хотите графический интерфейс? Используйте сома
Если у вас аллергия на терминалы, все популярные дистрибутивы Linux предлагают Catfish, универсальное приложение с графическим интерфейсом, которое позволяет искать файлы и их содержимое по определенной строке. Она не так сложна, как обсуждаемые здесь команды, но предоставляет ценную услугу людям, предпочитающим графический интерфейс.
Чтобы найти содержимое файла по определенному слову, откройте меню в правом верхнем углу Catfish и выберите «Искать содержимое файла».
После то
Использование find для поиска определенного слова в файле
ей панели и нажмите Enter. Вот и все!Читайте также: Различия между Su, Sudo Su, Sudo -s и Sudo -i
Часто задаваемые вопросы
Как остановить поиск grep до его завершения?
Чтобы остановить любой текущий процесс в вашем терминале, просто нажмите Ctrl+ Cна клавиатуре. Это отправляет сигнал о завершении текущего процесса. Именно поэтому вы не можете использовать обычные сочетания клавиш для копирования и вставки из эмулятора терминала.
Существуют ли файловые менеджеры, выполняющие поиск по содержимому файлов?
Если вы используете среду рабочего стола KDE Plasma, ее файловый менеджер по умолчанию (Dolphin) уже имеет такую возможность. Когда вы нажимаете кнопку поиска для поиска файлов, под строкой поиска появляется возможность выбрать между именами файлов и их содержимым.
Просто нажмите «Содержимое», если хотите выполнить поиск по словам в файлах. Это не так сложно, как использование grep, но оно делает свою работу.
Есть ли другие варианты использования grep?
Grep предназначен не только для поиска в файловой системе! Интересно, что вы можете передать его практически через любую команду для поиска в выводе вместо того, чтобы искать что-то вручную.
Gre
Использование ack для поиска определенного слова в файле
ь вам то, что более актуально для вас. Поэкспериментируйте с ним достаточно, и со временем вы овладеете искусством диагностики и знакомства с вашим компьютером!Все скриншоты Мигеля Лейва-Гомеса.