Логотип

Как найти файлы, содержащие определённый текст (строку), в Linux

Как найти файлы, содержащие определённый текст (строку), в Linux

Как найти определённую строку в разных файлах, найти строку в файлах разных типов в каталоге или исключить определённые каталоги? Это распространённые проблемы, с которыми можно столкнуться при работе в Linux.

Чтобы помочь новичкам в Linux, мы покажем вам, как быстро выполнить эту задачу в Linux без дополнительных инструментов, используя только встроенную команду.

 

Поиск всех файлов, содержащих определённую строку, в Linux

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

Для демонстрации я уже создал два текстовых файла и буду искать в них вхождение строки проблема с помощью следующей команды:

$ grep -Rnw file1.txt file2.txt -e 'problem'

 

Как видите, нам удалось найти совпадающую строку в обоих файлах, она выделена красным.

Чтобы понять, какой параметр мы использовали в команде, ознакомьтесь с ним ниже.

  • -r или -R используется для рекурсивного поиска.
  • -n используется для указания номера строки, в которой находится соответствующая строка.
  • -w используется для поиска целых слов, а не подстрок.
  • -e — это шаблон, используемый при поиске.

 

Помимо этого варианта, вы можете выбрать и другие.

  • -l (строчная буква «L«) может использоваться для указания имени файла, соответствующего запросу.
  • --include может использоваться для поиска только определенных файлов.
  • --exclude может использоваться для исключения определенных типов файлов из поиска.
  • --exclude-dir может использоваться для исключения определенных каталогов при поиске файлов.
Читать  Что такое xwininfo и зачем он нужен?

 

Вот ещё несколько примеров использования командной строки, которые помогут вам узнать больше о различных способах поиска определённой строки в файлах.

1. Найдите строки pattern во всех текстовых файлах, находящихся в текущем каталоге.

$ grep -Rnw *.txt -e "pattern"

 

2. Найдите строки pattern во всех текстовых файлах, находящихся в каталоге ~/Documents .

$ grep -Rnw ~/Documents/*.txt -e "pattern"

 

3. Найдите строки pattern во всех PHP-файлах, находящихся в каталоге /var/www/html .

$ grep -Rnw /var/www/html/*.php -e "pattern"

 

4. Найдите строки pattern во всех PHP- и текстовых файлах, находящихся в каталоге /var/www/html .

$ grep --include=\*.{php,txt} -rnw '/var/www/html' -e "pattern"

 

5. Найдите строки pattern во всех файлах, кроме текстовых файлов, находящихся в каталоге /var/www/html .

$ grep --exclude=\*.txt -rnw '/var/www/html' -e "pattern"

 

6. Найдите строку pattern во всех файлах, находящихся в каждом каталоге по адресу /var/www/html, кроме каталогов со стилями и изображениями.

$ grep --exclude-dir={style,image} -rnw '/var/www/html/' -e "pattern"

 

7. Найдите строки pattern во всех текстовых файлах, находящихся в текущем каталоге, но вместо вывода абзаца выведите имя файла, в котором есть указанная строка.

$ grep -Rnwl *.txt -e "pattern"

 

Вот и всё.

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала