Быстрые ссылки
В Linux есть несколько удобных способов быстро найти нужный файл: команды locate, find и whereis. Если вы поймёте, чем они отличаются и когда какую лучше применять, сэкономите себе кучу времени и нервов. Давайте разберёмся, как работает каждая и в каких ситуациях они окажутся максимально полезными.
Как пользоваться всеми поисковыми командами Linux
Узнайте, какой из шести поисковых инструментов Linux лучше всего справится с вашей задачей, и почему.
Команда locate
locate — это утилита для молниеносного поиска файлов и папок по имени или его части. Секрет её скорости в том, что она обращается не к самой файловой системе, а к заранее созданной базе данных (обычно mlocate.db, plocate.db или locate.db — в зависимости от дистрибутива).
Важно помнить: база не обновляется мгновенно. Если вы создали или удалили файл недавно, locate может не заметить изменений до следующего обновления. Обычно база обновляется раз в день с помощью системного задания cron, но можно запустить обновление вручную командой sudo updatedb. Процесс может занять некоторое время, так как индексируется вся файловая система.
Для простого поиска используйте команду:
Если база актуальна и файл существует, locate выведет все пути, где встречается «my_script.sh». Опция -i позволяет искать без учёта регистра.
Вы также можете искать все файлы с конкретным расширением, подсчитывать количество совпадений с помощью -c или ограничивать число результатов через -n. Поддерживаются шаблоны с подстановочными знаками и даже простые регулярные выражения для гибкого поиска.
locate, mlocate и plocate: в чём разница?
Оригинальная утилита locate во многих дистрибутивах была заменена на mlocate, которая повысила безопасность: выводятся только те файлы, к которым у пользователя есть доступ.
При установке mlocate команда locate фактически запускает именно её. Узнать, какая версия у вас установлена, можно так:
Это покажет, какую реализацию locate вы используете.
Современный аналог — plocate — постепенно вытесняет mlocate во многих дистрибутивах. Он работает быстрее и эффективнее благодаря сжатому индексу, что особенно заметно при большом количестве файлов. Например, Fedora уже использует plocate по умолчанию, и многие другие дистрибутивы движутся в том же направлении.
Чтобы установить plocate в Ubuntu, выполните команду:
Команда для поиска остаётся прежней — locate. Особенности использования почти не поменялись, хотя в plocate есть некоторые продвинутые опции.
Как искать файлы и папки в Linux через терминал
Большинство пользователей предпочитают графические менеджеры (Nautilus, Dolphin, Thunar), но командная строка даёт больше контроля и гибкости.
Команда find
В отличие от locate, команда find ищет файлы и папки «на лету» — напрямую обходя заданный каталог и все вложенные папки. Она не зависит от базы данных, выдаёт всегда актуальные результаты, но может работать медленнее, особенно на больших файловых системах.
Мощь команды find в Linux
Научитесь использовать find вместе с xargs и exec для продвинутого поиска и автоматизации.
Главная сильная сторона find — возможность искать по множеству параметров: имени, типу, размеру, правам доступа, владельцу, времени изменения и многому другому. Кроме того, с помощью ключа -exec можно запускать любые команды над найденными файлами (rm, cp, chmod и др.).
Пример базового синтаксиса:
Например, чтобы найти файл config.xml в домашней директории и всех её вложенных папках, выполните:
Как и locate, find умеет искать без учёта регистра с опцией -iname:
Эта команда найдёт файлы error.log, Error.Log и ERROR-messages.log в папке /var/log.
Как рекурсивно искать каталоги в Linux
В Linux всё — файлы и каталоги, и для скриптов часто приходится искать именно папки по имени.
Чтобы найти все каталоги (тип d) в текущей папке, используйте:
Если нужно найти файлы размером больше 100 МБ в папке /opt, выполните:
Кроме того, можно искать пустые файлы и папки или фильтровать по времени изменения. А с помощью -exec легко удалять, копировать или менять права у найденных файлов. Например, чтобы удалить все .tmp-файлы:
Команда whereis
Whereis сильно отличается от locate и find. Эта команда быстро ищет исполняемые файлы (бинарники), исходники и man-страницы заданной команды.
Она особенно полезна, когда нужно понять, где установлена программа, или решить проблему с её запуском.
4 команды Linux для поиска исполняемых файлов
Научитесь находить пути к исполняемым программам с помощью which, whereis, type -a и command -v на понятных примерах.
Whereis проверяет только заранее определённые каталоги, где обычно хранятся бинарники (/bin, /usr/bin, /usr/local/bin), man-страницы (/usr/share/man) и исходные коды.
Например, чтобы найти бинарник ls, его исходники (если есть) и man-страницы, выполните:
Вы увидите, что бинарник ls расположен в /bin/ls, а man-страница — в /usr/share/man/man1/ls.1.gz.
Если нужна только папка с исполняемым файлом, используйте опцию -b:
Чтобы найти только man-страницы — -m:
Можно указать сразу несколько команд для поиска:
Как правило, исходники по умолчанию не устанавливаются, поэтому их может не быть в выводе — тогда будет показано только имя команды.
Когда какую команду выбирать
Команду locate стоит применять, если нужно очень быстро найти системные файлы по имени или его части. Она отлично подходит, когда файл не новый или база недавно обновлялась.
Find лучше использовать, если нужно искать по более сложным критериям — размеру, типу, правам, времени изменения и так далее. Эта команда незаменима для глубокого поиска внутри конкретной папки или когда нужно работать с файлами, которые ещё не попали в базу locate. К тому же find удобно использовать, если нужно сразу выполнить какие-то действия с найденными файлами.
Whereis — настоящая палочка-выручалочка, когда надо быстро найти исполняемый файл, исходники или man-страницы конкретной программы. Это помогает разбираться с установкой софта и исправлять проблемы при запуске.
Чаще всего эти инструменты отлично дополняют друг друга. Например, если locate выдаёт слишком много результатов, можно ограничить поиск нужной папкой и использовать find для более точного отбора. Вместе они превращают ваш Linux в мощный и универсальный инструмент для управления файлами.
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Вы также можете найти наши материалы в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru