DataLife Engine / Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

В операционных системах семейства Linux все объекты ОС являются файлами. Это означает, что не только данные пользователя и настройки системы хранятся в файлах, но и различные механизмы управления системой и коммуникации основаны тоже на файлах. Поэтому поиск файлов очень важен и для новичков будет очень полезно узнать, как найти местоположение того или иного файла, будь то программа, изображение или документ.

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


Содержание статьи

Поиск файла в Linux через графический интерфейс

В популярных графических окружениях рабочего стола таких как Gnome или KDE поддерживается поиск файлов прямо в главном меню. Этот поиск выполняется реальном времени и ищет только в самой домашней папке и в нескольких стандартных подпапках, таких как Документы, Загрузки и т д. Кроме того, большинство файловых менеджеров поддерживают поиск файла в выбранной папке и её подпапках. Я не буду рассматривать это в данной статье. Вместо этого давайте сосредоточимся на утилитах, которые позволяют выполнять расширенный поиск файлов.

1. Catfish

Это простая программа для поиска файлов. В ней можно выбрать тип файла для поиска, а также время его изменения. Программа ищет по всей файловой системе, поэтому это может занять довольно много времени. Она ищет не в реальном времени, а использует поисковый индекс mlocate. Вы можете установить Catfish в Ubuntu используя такую команду:

sudo apt install catfish

После запуска программы вы можете сразу же набрать нужный запрос в строке поиска и нажать кнопку со значком лупы, например file1:

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Если вы хотите найти только файлы измененные сегодня, выберите пункт Custom в левой части окна. Или же вы можете вручную указать интервал, в котором должна находится дата изменения:

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Кроме того, утилита поддерживает поиск по содержимому. Для этого нужно включить галочку Search file contents в настройках:

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

2. FSearch

Это инструмент для поиска файлов по имени работающий также как и Everything Search Engine. При первом запуске необходимо создать индекс для поиска на основе папок, в которых вы собираетесь искать файлы. Затем вы будете получать результаты поиска сразу же при вводе текста. Программа поддерживает модификаторы по типу файла, символы подстановки, операторы И/ИЛИ, регулярные выражения, сортировку по типу и размеру, а также многое другое. Вы можете найти информацию о том как установить FSearch в вашем дистрибутиве на странице программы на GitHub. При первом запуске окно программы выглядит вот так:

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

После запуска программы необходимо нажать кнопку Add Folders и добавить папки, в которых вы хотите выполнять поиск с помощью кнопки со значком плюса:

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Также здесь можно настроить параметры поискового индекса и частоту его обновления. Позже, индекс можно настроить открыв Edit -> Preferences -> Database. После этого вы можете просто начать набирать имя файла в поисковой строке и он сразу же появится в списке:

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Можно использовать модификатор по типу файла, например pic: для картинок:

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Кроме того доступны такие модификаторы типа файла: file, folder, app, archive, audio, doc, video. Также можно использовать регулярные выражения с помощью модификатора regex:

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Или искать по размеру с помощью модификатора size:

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Вы можете найти все остальные модификаторы поиска на этой странице.

Существует ещё одна похожая утилита для поиска - это AngrySearch. Но она уже давно не обновлялась и её функциональность примерно такая же как и у fsearch, поэтому я не буду рассматривать её в этой статье.

3. Recoll

Это приложение тоже может выполнять поиск файлов Linux не только по имени, но и по их содержимому. Здесь используется полнотекстовый поисковый движок Xapian. Как и в предыдущем варианте необходимо сначала создать поисковый индекс. Для этого нажмите кнопку Indexing Configuration:

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

В открывшемся окне вы можете добавить папки, в которых будет выполняться поиск в разделе Top-Level Directories, а также, поскольку это полнотекстовый индекс, то можно подключить словари словоформ для вашего языка в разделе Stemming Languages. По умолчанию выбрана только ваша домашняя папка:

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Когда все настройки будут внесены, нажмите кнопку Ok, а затем Start the indexing process. В приложении доступно четыре варианта поисковых запросов:

Для поиска файлов по имени в Linux выберите тип поиска File Name, и наберите запрос. Например:

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Для поиска по содержимому выберите Any Word, All Words, или Query Language. Например:

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Можно искать по содержимому только в файлах с определённым расширением или вхождением определённых символов в имя файла используя язык запросов. Синтаксис довольно простой: имя_поля:значение. Например, так можно найти все вхождения Losst в файлах, начинающихся на file:

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Более подробную информацию про все возможные модификаторы можно найти в официальной документации.

Поиск файлов в Linux по имени через терминал

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

1. find

Самая часто используемая команда поиска файла Linux на данный момент - это find. Она имеет множество возможностей: вы можете искать файлы по имени, дате изменения или создания, использовать регулярные выражения и маски, выполнять определённые действия для найденных файлов, настраивать глубину поиска и многое другое.

По умолчанию команда find ищет и файлы и каталоги. Если папку не задать явно, то поиск будет выполняться в текущей папке. Указать что нужно искать именно файлы можно с помощью опции -type с параметром f, а сам запрос надо указать с помощью опции -name. Например:

find -type f -name "file"
Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Обратите внимание, что find будет искать файлы, имя которых точно совпадает с вашим запросом. Если вам нужно найти файлы которые содержат определённые символы в имени, используйте символы подстановки, например *:

find -type f -name "file*"
Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Папку для поиска нужно указать перед остальными параметрами. Например, для того чтобы найти все файлы, которые начинаются на pa в папке /etc/ используйте такую команду:

sudo find /etc/ -type f -name "pa*"
Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Для того чтобы не учитывать регистр символов при поиске, используйте опцию -iname вместо -name:

sudo find /etc/ -type f -iname "pa*"
Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Если вы хотите найти файлы только с определённым расширением, это можно сделать указав звездочку перед запросом. Например, для того чтобы получить все файлы .ini выполните:

sudo find /etc/ -type f -name "*.ini"
Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Более подробную информацию об этой команде читайте в статье команда find в Linux.

2. fd

Это альтернатива команды find, написанная на Rust. Она работает быстрее оригинальной find, поддерживает цветной вывод, поиск по регулярным выражениям, не учитывает скрытые файлы и файлы, перечисленные в .gitignore а также имеет более простой и удобный синтаксис. В Ubuntu утилиту можно установить с помощью следующей команды:

sudo apt install fd-find

Обратите внимание, что в Ubuntu эта команда пишется не fd, как задумали разработчики, а fdfind.

Как и find, эта утилита по умолчанию ищет в текущей папке, но вместо точного сопоставления имени, она ожидает часть имени или регулярное выражение. Например, для того чтобы найти все файлы в текущей папке, которые содержат слово file в имени достаточно команды:

fdfind file
Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Далее, для того чтобы найти файлы имя которых начинается на pa в папке /etc/ используйте такую команду:

sudo fdfind "^pa" /etc/
Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Если вам нужно искать файлы по расширению, используйте опцию -e. Например, для поиска всех ini файлов содержащих в имени букву x в папке /etc/ выполните:

sudo fdfind -e ini "x" /etc/
Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Более подробную информацию об утилите можно найти на её странице GitHub.

3. fzf

Команда fzf предназначена для живого нечеткого поиска файлов по имени. При запуске она показывает список файлов в текущей папке и строку поиска, куда вы можете вводить поисковый запрос, для того чтобы уменьшить количество этих файлов. Список фильтруется в реальном времени и всё работает довольно быстро. Для установки программы в Ubuntu можно использовать такую команду:

sudo apt install fzf

Когда утилита установлена, нужно перейти в папку, в которой вы хотите выполнять поиск. Например, в папку /etc/:

cd /etc/

Теперь запустите утилиту и наберите запрос pass, для того чтобы найти все файлы содержащие в названии pass:

fzf
Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

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

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Если вы хотите искать вхождения только с начала имени файла, используйте символ ^ перед запросом:

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

А если только с конца, то символ $. Более подробную информацию можно найти в официальной документации.

4. skim

Это ещё одна утилита для нечеткого поиска в Linux в реальном времени, написанная на Rust. Она может делать почти всё то же самое что и fzf, но более легковесная. Утилиты нет в официальных репозиториях Ubuntu, но вы можете установить её с помощью cargo:

cargo install skim

Как и при использовании fzf вам нужно перейти в папку, в которой будет выполняться поиск. Например:

cd /etc/

Теперь вы можете запустить программу и начать вводить поисковый запрос:

sk
Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

По списку найденных файлов можно перемещаться с помощью клавиш стрелка вверх и вниз. В отличие от fzf здесь также поддерживается командный режим, который позволяет добавить дополнительный уровень фильтрации комбинируя skim с grep или другой утилитой для поиска файлов. Просто укажите команду с помощью опции -c. Например:

sk --ansi -c 'grep -r "{}" .'

После выполнения команды вы увидите не только имена файлов но и их содержимое. Здесь вы можете отфильтровать файлы по имени. Например, только содержащие в пути init.d:

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

А затем, переключитесь в командный режим с помощью сочетания клавиш Ctrl+Q и наберите запрос уже для поиска по содержимому:

Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Или же сразу можно перейти в командный режим добавив опцию -i к команде запуска:

sk --ansi -i -c 'grep -r "{}" .'

5. locate

Команда locate считается устаревшей и уже была удалена из многих дистрибутивов. Она выполняет поиск не в реальном времени, как find, а по ранее созданной базе файлов, но она делает только поиск файла по имени Linux. Вы вводите слово, которое вас интересует, и утилита выдаёт все известные ей файлы, имя которых содержит такое слово. Можно использовать регулярные выражения. Например, найдем все файлы, в имени которых содержится passwd:

locate passwd
Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Обратите внимание, что если файл был добавлен после создания базы, то он найден не будет. Для обновления поискового индекса locate используйте такую команду:

sudo updatedb

Более подробно об этой утилите можно прочитать в статье Команда locate в Linux.

Поиск файлов по содержимому в в терминале

Существует несколько консольных утилит для поиска файлов по их содержимому и они будут подробно описаны в отдельной статье. Это SilverSearcher, ripgrep, ack и другие. Но исторически так сложилось, что самая популярная и часто используемая утилита для поиска текста по файлам это grep. Она поставляется во всех популярных дистрибутивах по умолчанию и её возможностей хватает для большинства задач.

Для того чтобы найти файлы, которые содержат определённую строку достаточно использовать опцию -r и указать папку, в которой надо искать текст. Например, давайте найдём все файлы в /etc/, которые содержат строчку error_reporting:

sudo grep -r "error_reporting" /etc/
Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

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

Как узнать расположение исполняемого файла Linux

Это можно сделать с помощью команды whereis. Эта команда достаточно простая и решает только одну задачу. Она показывает, где находится исполняемый файл, переданной ей программы. Например, если мы хотим узнать, в какой папке расположен grep, достаточно выполнить:

whereis grep
Найди что угодно в Linux: 10 способов поиска файлов, о которых ты не знал

Выводы

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

16-10-2025, 05:35
Вернуться назад