Искать файлы в Windows можно не только по их названию и расширению, но и по содержимому, правда, для этого потребовалось бы добавить содержащие их папки в список индексируемых. В Linux с этим намного проще, для поиска текстовых вхождений, а также самих файлов и папок в этой операционной системе используется утилита grep.
В отличие от сторонних приложений для поиска, инструмент grep универсален: он имеется практически во всех дистрибутивах Linux, BSD и Unix. Утилита grep является консольной, но это не должно смущать – пользоваться ею просто, тем более, что на практике вам пригодится только часть реализованного в ней функционала. А теперь давайте перейдем к примерам ее использования.
Поиск папок
Утилиту grep в связке с командой вывода содержимого каталогов ls можно использовать для быстрого поиска папок.
Например, вы хотите узнать, имеется ли в текущей папке каталог с именем Startup.
Откройте терминал и выполните такую команду:
sudo ls | grep Startup
Команда ls выводит содержимое текущего каталога, а grep отфильтрует его.
Эту же связку можно использовать для поиска прочих объектов, в том числе скрытых, для чего первой команде нужно передать ключ -a:
sudo ls -a | grep .config
Если искомый объект имеется в папке, связка команд вернет его имя, в противном случае команда вернет пустую строку.
Поиск внутри файла
Теперь посмотрим, как использовать утилиту grep для поиска текста внутри файлов.
Предположим, вам нужно найти все файлы в папке etc, в которых имеется текстовое вхождение «192.168.1.1».
Запустите терминал и выполните следующую команду:
sudo grep -r "192.168.1.1" /etc/
Ключ -r в данном примере означает, что поиск станет выполняться рекурсивно, а /etc/ – это путь к каталогу, в котором осуществляется поиск. В результате команда выведет список файлов, в которых был найден искомый текст с указанием полного пути.
Искать вхождение можно и в конкретном файле, если известно его расположение:
sudo grep "192.168.1.1" /etc/hosts
Полезные ключи
Утилита grep поддерживает множество ключей, некоторые из которых вам пригодятся, а некоторые нет.
Помимо включающего рекурсию -r, наиболее востребованными являются следующие ключи:
- [-i] – отключает требование учета регистра, учитываемое Linux по умолчанию.
- [-l] – дает команду показать только имена файлов, в которых найдены вхождения.
- [-s] - подавляет вывод сообщений об ошибках.
- [-w] – выполняет поиск строго по шаблону. Если вы обратили внимание, даже при использовании кавычек поиск выполнялся не по целым словам. При добавлении ключа -w утилита grep будет искать точное вхождение.
- [-e] – этот ключ позволяет использовать регулярные выражения.
- [--color=always] – включает подсветку для найденных вхождений.
- [-n] – включает показ номеров строк, в которых найдены совпадения (работает не во всех дистрибутивах).
Существуют и сторонние инструменты внутритекстового поиска, из которых самым популярным является консольная утилита Ripgrep, но в большинстве случаев для выполнения базовых задач поиска в консоли хватает возможностей и штатной grep.
Добавить комментарий