Как в Linux искать текст внутри файлов системными средствами

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

В отличие от сторонних приложений для поиска, инструмент grep универсален: он имеется практически во всех дистрибутивах Linux, BSD и Unix. Утилита grep является консольной, но это не должно смущать – пользоваться ею просто, тем более, что на практике вам пригодится только часть реализованного в ней функционала. А теперь давайте перейдем к примерам ее использования.

Поиск папок

Утилиту grep в связке с командой вывода содержимого каталогов ls можно использовать для быстрого поиска папок.

Например, вы хотите узнать, имеется ли в текущей папке каталог с именем Startup.

Откройте терминал и выполните такую команду:

sudo ls | grep Startup

Grep Startup

Команда ls выводит содержимое текущего каталога, а grep отфильтрует его.

Эту же связку можно использовать для поиска прочих объектов, в том числе скрытых, для чего первой команде нужно передать ключ -a:

sudo ls -a | grep .config

Ls -a grep

Если искомый объект имеется в папке, связка команд вернет его имя, в противном случае команда вернет пустую строку.

Поиск внутри файла

Теперь посмотрим, как использовать утилиту grep для поиска текста внутри файлов.

Предположим, вам нужно найти все файлы в папке etc, в которых имеется текстовое вхождение «192.168.1.1».

Запустите терминал и выполните следующую команду:

sudo grep -r "192.168.1.1" /etc/

Sudo grep

Ключ -r в данном примере означает, что поиск станет выполняться рекурсивно, а /etc/ – это путь к каталогу, в котором осуществляется поиск. В результате команда выведет список файлов, в которых был найден искомый текст с указанием полного пути.

Искать вхождение можно и в конкретном файле, если известно его расположение:

sudo grep "192.168.1.1" /etc/hosts

Grep

Полезные ключи

Утилита grep поддерживает множество ключей, некоторые из которых вам пригодятся, а некоторые нет.

Помимо включающего рекурсию -r, наиболее востребованными являются следующие ключи:

  • [-i] – отключает требование учета регистра, учитываемое Linux по умолчанию.
  • [-l] – дает команду показать только имена файлов, в которых найдены вхождения.

Grep

  • [-s] - подавляет вывод сообщений об ошибках.
  • [-w] – выполняет поиск строго по шаблону. Если вы обратили внимание, даже при использовании кавычек поиск выполнялся не по целым словам. При добавлении ключа -w утилита grep будет искать точное вхождение.

Grep

  • [-e] – этот ключ позволяет использовать регулярные выражения.
  • [--color=always] – включает подсветку для найденных вхождений.

Grep

  • [-n] – включает показ номеров строк, в которых найдены совпадения (работает не во всех дистрибутивах).

Существуют и сторонние инструменты внутритекстового поиска, из которых самым популярным является консольная утилита Ripgrep, но в большинстве случаев для выполнения базовых задач поиска в консоли хватает возможностей и штатной grep.

Оцените Статью:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Загрузка...

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *