ГлавнаяОперационные системыLinuxКак найти определенное слово в файле в Linux

Как найти определенное слово в файле в Linux

По умолчанию большинство инструментов поиска просматривают имена файлов, а не их содержимое. Однако самая известная программа поиска GNU, grep, будет просматривать файлы с правильными флагами. Здесь мы покажем вам, как найти определенные слова в файле в Linux.

Также читайте: Как найти большие файлы в Linux

Использование grep для поиска определенного слова в файле

По умолчанию grep выполняет поиск по содержимому файлов, а также по их именам. Он включен в большинство систем Linux и, как правило, одинаков во всех дистрибутивах. Программисты, просматрив

Использование 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для поиск внутри файлов.

Интересные флаги, которые можно использовать с grep/div>

Обратите внимание, что findпросматривает только имена файлов, а не их содержимое. Вот почему grep необходим для поиска текста и содержимого файла. Обычные флаги grep должны быть полностью работоспособны внутри флага -exec.

Использование ack для поиска определенного слова в файле

команда подтверждения , вероятно, самый быстрый инструмент поиска, но он не так популярен, как grep. Команда ниже выполнит поиск в текущем каталоге.

ack 'pattern'

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

ack 'pattern' /path/to/file.txt

Читайте также: Как устанавливать версии Python и управлять ими в Linux

Хотите графический интерфейс? Используйте сома

Если у вас аллергия на терминалы, все популярные дистрибутивы Linux предлагают Catfish, универсальное приложение с графическим интерфейсом, которое позволяет искать файлы и их содержимое по определенной строке. Она не так сложна, как обсуждаемые здесь команды, но предоставляет ценную услугу людям, предпочитающим графический интерфейс.

Греп Кэтфишги

Чтобы найти содержимое файла по определенному слову, откройте меню в правом верхнем углу Catfish и выберите «Искать содержимое файла».

Grep Catfishсодержание

После то

Использование find для поиска определенного слова в файле

ей панели и нажмите Enter. Вот и все!

Читайте также: Различия между Su, Sudo Su, Sudo -s и Sudo -i

Часто задаваемые вопросы

Как остановить поиск grep до его завершения?

Чтобы остановить любой текущий процесс в вашем терминале, просто нажмите Ctrl+ Cна клавиатуре. Это отправляет сигнал о завершении текущего процесса. Именно поэтому вы не можете использовать обычные сочетания клавиш для копирования и вставки из эмулятора терминала.

Существуют ли файловые менеджеры, выполняющие поиск по содержимому файлов?

Если вы используете среду рабочего стола KDE Plasma, ее файловый менеджер по умолчанию (Dolphin) уже имеет такую ​​возможность. Когда вы нажимаете кнопку поиска для поиска файлов, под строкой поиска появляется возможность выбрать между именами файлов и их содержимым.

Просто нажмите «Содержимое», если хотите выполнить поиск по словам в файлах. Это не так сложно, как использование grep, но оно делает свою работу.

Есть ли другие варианты использования grep?

Grep предназначен не только для поиска в файловой системе! Интересно, что вы можете передать его практически через любую команду для поиска в выводе вместо того, чтобы искать что-то вручную.

Gre

Использование ack для поиска определенного слова в файле

ь вам то, что более актуально для вас. Поэкспериментируйте с ним достаточно, и со временем вы овладеете искусством диагностики и знакомства с вашим компьютером!

Все скриншоты Мигеля Лейва-Гомеса.

Хотите графический интерфейс? Используйте сома

Часто задаваемые вопросы

Как остановить поиск grep до его завершения?

Существуют ли файловые менеджеры, выполняющие поиск по содержимому файлов?

Есть ли другие варианты использования grep?

ПОХОЖИЕ СТАТЬИ

Популярные записи