Поиск содержимого файла Linux
Обновлено: 21.11.2024
Почти все файловые менеджеры для Linux, такие как Nemo и Thunar, по умолчанию предоставляют возможность поиска файлов. Но если вы хотите найти строку внутри содержимого файла с помощью файлового менеджера, большинство из них не позволяют вам это сделать.
В этой статье я расскажу о различных способах, которые можно использовать в любом дистрибутиве Linux для поиска всех файлов, содержащих определенные текстовые строки или слова, путем рекурсивного поиска во всех подкаталогах.
На этой странице
Поиск определенного текста в Linux с помощью инструмента Catfish GUI
Я начну с самого простого способа, который подойдет всем, в том числе новичкам, и продвинутым пользователям Linux. Catfish — это простой и легкий инструмент поиска файлов с графическим интерфейсом для настольных компьютеров Linux. Наряду с поиском файлов в вашей системе вы также можете использовать его для поиска всех файлов, содержащих определенное слово.
Установка инструмента поиска Catfish в Linux
Пакет Catfish уже доступен в основных репозиториях Debian и Ubuntu. Следовательно, если вы используете дистрибутивы на основе Debian или Ubuntu, вы можете просто установить его, выполнив команду:
В других дистрибутивах Linux вы можете установить его из репозиториев по умолчанию с помощью диспетчера пакетов.
Если пакет недоступен, вы можете загрузить файл последней версии, извлечь загруженный файл tar.bz2 и выполнить следующую команду:
Поиск содержимого файла с помощью Catfish
После установки вам нужно только включить «Поиск содержимого файла», выбрать каталоги из раскрывающегося списка в верхнем левом углу и ввести текст, который вы хотите найти. В нем будут перечислены все файлы, содержащие текст, а также размер и местоположение файла.
Поиск определенного текста в Linux с помощью Catfish Tool
Вы также можете использовать фильтр по типу файла и дате изменения на левой панели, чтобы уменьшить область поиска. Вы даже можете добавить путь к каталогу, в котором вы не хотите выполнять поиск.
Поиск текста по типам файлов
Поиск определенного текста в Linux с помощью команды Grep
Помимо графического интерфейса, grep — один из популярных инструментов командной строки, который можно использовать для поиска внутри файлов. Поскольку почти все unix-подобные операционные системы поставляются с утилитой grep по умолчанию, вам не нужно ее устанавливать.
Поиск определенного текста в файлах
Теперь, чтобы найти все файлы для данной текстовой строки в терминале Linux, вы можете запустить следующую команду. Здесь флаг '-r' или '-R' рекурсивно просматривает все подкаталоги внутри указанного каталога.
Поиск определенного текста в файлах
Найти имена файлов, содержащие заданную строку
Если вы хотите напечатать только имена файлов и скрыть текст из вывода, вы можете использовать флаг '-l'.
Имена файлов списка содержат определенный текст в Linux
Печать имен файлов и номеров строк, содержащих заданную строку
Кроме того, вы также можете настроить вывод, используя следующие параметры, доступные для grep:
Также стоит упомянуть, что если вы выполняете поиск в каталогах, для которых требуются права суперпользователя, вам необходимо использовать команду sudo.
Поиск определенного текста в определенных типах файлов
Чтобы еще больше сократить область поиска, вы также можете специально указать тип файлов и каталогов, которые нужно искать только во время поиска. «--include», «--exclude» и «--exclude-dir» — это параметры, доступные для добавления типа файла и фильтра каталога.
Поиск определенного текста в определенных типах файлов
Поиск определенного текста в Linux с помощью MC (Midnight Commander)
Если вы живете в терминале и по-прежнему хотите искать текст с помощью графического интерфейса, вы также можете попробовать файловый менеджер на основе пользовательского интерфейса терминала (TUI). для файлов.
Полуночный командир
Установите Midnight Commander в Linux
Midnight Commander доступен для установки из репозиториев по умолчанию в большинстве дистрибутивов Linux.
Поиск содержимого файла с помощью Midnigh Commander
Внутри терминала mc обеспечивает визуальное представление файловой системы, в которой вы можете перемещаться с помощью клавиатуры или мыши. Для поиска содержимого файла вы можете открыть диалоговое окно поиска, нажав ALT+SHIFT+? и введите текст в поле «Содержание:».
Поиск содержимого файла с помощью Midnight Commander
Как вы можете видеть на рисунке выше, вы также можете использовать фильтры, такие как игнорирование регистра, целые слова и регулярное выражение, просто установив или сняв соответствующий флажок.
Поиск содержимого файла с использованием фильтров
Заключение
Все вышеперечисленные приложения удобны для начинающих, бесплатны для использования и имеют открытый исходный код для добавления собственных улучшений. Кроме того, вы также можете попробовать другие бесплатные инструменты, такие как Ack, The Silver Searcher, Ripgrep и команду find.
Linux, независимо от используемого вами дистрибутива, поставляется с рядом инструментов с графическим интерфейсом, которые позволяют искать файлы. Многие современные файловые менеджеры поддерживают поиск файлов прямо в списке файлов. Однако есть ряд ситуаций, когда вам нужно использовать консоль, например, во время сеанса SSH или когда X-сервер не запускается. Вот как можно быстро найти файлы, содержащие определенный текст, с помощью терминала.
Если вы можете использовать графический интерфейс, поиск файлов не проблема. В моей любимой среде рабочего стола XFCE файловый менеджер Thunar позволяет искать файлы, вводя имя файла непосредственно в списке файлов.
Однако ни один из файловых менеджеров, которые я пробовал, не позволяет искать содержимое файлов.
Чтобы обойти это ограничение при работе в сеансе GUI, вы можете использовать Сatfish. Сatfish — популярный поисковый инструмент. Это позволяет искать содержимое файла. Вам нужно нажать на значок шестеренки и включить параметр Поиск по содержимому файла.
Однако когда дело доходит до терминала, вы не можете использовать какие-либо графические инструменты. Кроме того, я считаю Catfish бесполезным и предпочитаю классические консольные инструменты. Вот методы и инструменты, которые я использую.
Чтобы найти файлы, содержащие определенный текст в Linux, сделайте следующее.
- Откройте любимое терминальное приложение. Лично я предпочитаю терминал XFCE4.
- Введите следующую команду:
find ./ -type f -exec grep -l "искомый текст" <> \; - Это создаст список файлов, содержащих необходимую текстовую часть.
Команда find будет искать файлы, начиная с текущего каталога "./". Вместо этого вы можете указать желаемый путь.
Опция -type f указывает искать только файлы и исключать каталоги. Кроме того, вы можете настроить поиск только для файлов определенного типа, добавив следующую опцию:
find ./ -type f -iname "*.txt" -exec grep -l "искомый текст" <> \ ;
Посмотрите на следующий снимок экрана:
Опция -exec вызывает инструмент grep для каждого из соответствующих файлов, чтобы проверить их содержимое. Если текст найден в файле, его имя будет добавлено к выводу благодаря опции -l.
Linux, независимо от используемого вами дистрибутива, поставляется с рядом инструментов с графическим интерфейсом, которые позволяют искать файлы. Многие современные файловые менеджеры поддерживают поиск файлов прямо в списке файлов. Однако большинство из них не позволяют выполнять поиск внутри содержимого файла. Вот два метода, которые вы можете использовать для поиска содержимого файлов в Linux.
Возможно, есть и другие доступные методы. Есть Catfish, популярный инструмент поиска с поисковым индексом, который может очень быстро найти ваши файлы. Он поставляется с возможностью поиска содержимого файла, но у меня он работает ненадежно.
Я хотел бы поделиться методами, которыми пользуюсь сам.
Первый метод использует утилиту grep, которая есть в любом дистрибутиве, даже во встроенных системах, построенных на busybox.
Чтобы найти файлы, содержащие определенный текст в Linux, сделайте следующее.
- Откройте любимое терминальное приложение. Лично я предпочитаю терминал XFCE4.
- Перейдите (если требуется) к папке, в которой вы собираетесь искать файлы с определенным текстом.
- Введите следующую команду:
Вот переключатели:
-i - игнорировать регистр текста
-R - рекурсивно искать файлы в подкаталогах.
-l - показывать имена файлов вместо частей содержимого файла.
./ — последний параметр — это путь к папке с файлами, которые вам нужны для поиска вашего текста. В нашем случае это текущая папка с маской файла. Вы можете изменить его на полный путь к папке. Например, вот моя команда
Примечание. Другие полезные ключи, которые вы можете использовать с grep:
-n — показать номер строки.
-w - соответствует всему слову.
Еще один метод, который я использую, — это Midnight Commander (mc), консольный файловый менеджер. В отличие от grep, mc не включен по умолчанию во всех дистрибутивах Linux, которые я пробовал. Возможно, вам придется установить его самостоятельно.
Найти файлы, содержащие определенный текст, с помощью mc
Чтобы найти файлы, содержащие определенный текст, с помощью Midnight Commander, запустите приложение и нажмите на клавиатуре следующую последовательность:
Alt + Shift + ?
Откроется диалоговое окно поиска.
Заполните раздел "Содержание:" и нажмите клавишу Enter. Он найдет все файлы с требуемым текстом.
Вы можете поместить эти файлы на левую или правую панель с помощью параметра Panelize и копировать/перемещать/удалять/просматривать/делать с ними все, что хотите.
Midnight Commander очень экономит время при поиске.
Winaero очень рассчитывает на вашу поддержку. Вы можете помочь сайту и дальше предлагать вам интересный и полезный контент и программное обеспечение, используя следующие варианты:
Если вам понравилась эта статья, поделитесь ею с помощью кнопок ниже. Это не потребует от вас многого, но поможет нам расти. Спасибо за вашу поддержку!
Автор: Сергей Ткаченко
Сергей Ткаченко — разработчик программного обеспечения из России, который основал Winaero еще в 2011 году. В этом блоге Сергей пишет обо всем, что связано с Microsoft, Windows и популярным программным обеспечением. Следите за ним в Telegram, Twitter и YouTube. Просмотреть все сообщения Сергея Ткаченко
6 мыслей о «Найти файлы, содержащие определенный текст в Linux»
Предоставленный вами код помог мне. Есть и другие команды, которые я не могу вспомнить, чтобы найти текст в файлах, но эта делается быстро. Я добавил этот пост в закладки для дальнейшего использования. Спасибо.
Многие современные файловые менеджеры поддерживают поиск файлов непосредственно в списке файлов. Во всяком случае, большинство из них не позволяют вам искать содержимое файла. Вот несколько методов, которые вы можете использовать для поиска содержимого файлов в Linux с помощью командной строки. В этом фрагменте мы представим команды «grep», «ripgrep», «ack» и «find».
Используйте команду grep
Лучший способ поиска файлов, содержащих определенный текст, — использовать команду grep. Он предназначен для поиска файлов, содержащих нужный текст, по шаблонам во всех потоках данных. Вам нужно использовать следующую команду:
Здесь r обозначает рекурсивный, n обозначает номер строки, w используется для соответствия всему слову, '/path/to/somewhere/' – это каталог, а 'pattern' – текст, который вы ищете в файлах.
Чтобы сделать поиск более эффективным, вы также можете добавить такие необязательные параметры, как --exclude, --include, --exclude-dir.
- Чтобы выполнять поиск только среди файлов с расширениями .c или .h, используйте следующее:
- Чтобы исключить из поиска все файлы с расширением .o, попробуйте следующее:
- Чтобы исключить конкретный каталог из поиска, вам нужно следующее:
Вы также можете запустить другую командную строку с помощью grep:
Здесь i означает игнорирование регистра, R означает рекурсию, I используется для отображения имени файла, а не самого результата , а ./ означает запуск в корневом каталоге вашей машины.
Используйте команду ripgrep
Другим вариантом использования grep является ripgrep. Если вы работаете над большими проектами или большими файлами, вам лучше использовать ripgrep. Это будет выглядеть так:
Используйте команду подтверждения
Эта команда позволит вам искать во всей файловой системе или по нужному пути. Это может быть проще в использовании, чем grep.
- Для поиска по текущему пути используйте следующую командную строку:
- Для поиска во всей файловой системе измените каталог на корень (/) следующим образом:
Используйте команду поиска
Вы также можете комбинировать команды find и grep для более эффективного поиска текстовых строк во многих файлах.
Для поиска в файлах с определенными расширениями файлов, например для поиска «ваш-текст» только во всех файлах php, используйте следующую команду:
Читайте также: