Найти файлы, содержащие определенный текст в Linux
Linux, независимо от того, какой дистрибутив вы используете, поставляется с рядом инструментов с графическим интерфейсом, которые позволяют искать файлы. Многие современные файловые менеджеры поддерживают поиск файлов прямо в списке файлов. Однако есть ряд ситуаций, когда вам нужно использовать консоль, например, во время сеанса SSH или когда X-сервер не запускается. Вот как вы можете быстро найти файлы, содержащие определенный текст, с помощью терминала.
Рекламное объявление
Если вы можете использовать графический интерфейс, поиск файлов не проблема. В моей любимой среде рабочего стола XFCE файловый менеджер Thunar позволяет искать файлы, вводя имя файла прямо в список файлов.
Однако ни один из файловых менеджеров, которые я пробовал, не позволяет искать содержимое файлов.
Чтобы обойти это ограничение при работе в сеансе графического интерфейса, вы можете использовать Сatfish. Сatfish - популярный поисковый инструмент. Это позволяет искать содержимое файла. Вам нужно нажать на значок шестеренки и включить опцию
Поиск по содержимому файла.Однако, когда дело доходит до терминала, вы не можете использовать какие-либо графические инструменты. Кроме того, я считаю Catfish бесполезным и предпочитаю классические консольные инструменты. Вот методы и инструменты, которые я использую.
Чтобы найти файлы, содержащие определенный текст, в Linux, сделайте следующее.
- Откройте ваше любимое приложение-терминал. Терминал XFCE4 это мое личное предпочтение.
- Введите следующую команду:
find ./ -type f -exec grep -l "текст для поиска" {} \;
- Это создаст список файлов, содержащий требуемую текстовую часть.
Команда find будет искать файлы, начиная с текущего каталога "./". Вместо этого вы можете указать желаемый путь.
Опция -тип f указывает ему искать только файлы и исключать каталоги. Кроме того, вы можете заставить его искать только определенный тип файла, добавив следующую опцию:find ./ -type f -iname "* .txt" -exec grep -l "текст для поиска" {} \;
См. Следующий снимок экрана:
В -exec option вызывает инструмент grep для каждого из совпадающих файлов, чтобы проверить их содержимое. Если текст найден в файле, его имя будет добавлено к выводу, благодаря -l опция.
Альтернативы
Существуют альтернативы описанным выше методам. Прежде всего, вы можете использовать только grep орудие труда. Попробуйте следующую команду:
grep -iRl "текст для поиска" ./
- -i означает игнорировать регистр текста.
- -R означает рекурсивную обработку файлов.
- -l означает «показывать имя файла, а не сам результат».
Как видите, этот метод менее гибкий, чем найти команда.
Полуночный командир
Еще один метод, который я часто использую, - это Midnight Commander (mc), консольный файловый менеджер. В отличие от find или grep, mc не включен по умолчанию во все дистрибутивы Linux, которые я пробовал. Возможно, вам придется установить его самостоятельно.
Чтобы найти файлы, содержащие определенный текст, с помощью Midnight Commander, запустите приложение и нажмите на клавиатуре следующую последовательность:
Alt + Сдвиг + ?
Откроется диалоговое окно поиска.
Заполните поле «Имя файла:». Вы можете указать что-то вроде «* .txt» для поиска текста только в текстовых файлах.
Теперь заполните Содержание: коробка. Введите текст, содержащийся в файлах, и нажмите клавишу Enter.
Он найдет все файлы, соответствующие критериям.
Вот и все.