Команда Locate в Linux (Поиск Файлов и Каталогов)
Команда Locate в Linux (Поиск Файлов и Каталогов)
Locate Command in Linux
В этом руководстве мы объясним, как использовать locate команду.

Одна из наиболее распространенных операций при работе в Linux - поиск файлов и каталогов. В системах Linux есть несколько команд, которые позволяют вам искать файлы find
и locate
быть наиболее часто используемыми.
Команда locate
- самый быстрый и простой способ поиска файлов и каталогов по их именам.
Установка locate
(если команда locate не найдена)
В зависимости от дистрибутива и от того, как была предоставлена система, пакет locate может быть или не быть предварительно установлен в вашей системе Linux.
Чтобы проверить, установлена ли locate
утилита в вашей системе, откройте терминал, введите locate
и нажмите Enter
. Если пакет установлен, система отобразит locate: no pattern to search for specified
, в противном случае вы увидите что-то вроде locate command not found
.
Если locate
он не установлен, вы можете легко установить его с помощью менеджера пакетов вашего дистрибутива.
Установить locate
на Ubuntu и Debian
sudo apt update
sudo apt install mlocate
Установить locate
на CentOS и Fedora
sudo yum install mlocate
Как locate
работает
Команда locate
выполняет поиск заданного шаблона в файле базы данных, сгенерированном updatedb
командой. Найденные результаты отображаются на экране, по одному на строку.
Во время установки пакета mlocate создается задание cron, которое запускает updatedb
команду каждые 24 часа. Это гарантирует, что база данных регулярно обновляется. Для получения дополнительной информации о работе cron проверьте /etc/cron.daily/mlocate
файл.
Базу данных можно обновить вручную, выполнив updatedb
команду от имени пользователя root или пользователя с привилегиями sudo:
sudo updatedb
Процесс обновления займет некоторое время, в зависимости от количества файлов и каталогов и скорости вашей системы.
Файлы, созданные после обновления базы данных, не будут отображаться в результатах поиска.
По сравнению с более мощной find
командой, которая выполняет поиск в файловой системе, locate
работает намного быстрее, но не имеет многих функций и может выполнять поиск только по имени файла.
Как использовать locate
команду
Синтаксис locate
команды следующий:
locate [OPTION] PATTERN...
В своей основной форме, когда используется без каких-либо опций, locate
команда напечатает абсолютный путь ко всем файлам и каталогам, который соответствует шаблону поиска и для которого пользователь имеет разрешение на чтение.
Например, чтобы найти файл с именем .bashrc
, введите:
locate .bashrc
Вывод будет включать имена всех файлов, содержащих строку .bashrc
в их именах:
/etc/bash.bashrc
/etc/skel/.bashrc
/home/linuxize/.bashrc
/usr/share/base-files/dot.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc
/root/.bashrc
Файл не будет показан , так как мы запустили команду как обычный пользователь , который не имеет право доступа к /root
каталогу.
Если список результатов длинный, для лучшей читаемости вы можете направить вывод в less
команду:
locate .bashrc | less
Команда locate
также принимает шаблоны, содержащие символы-заглушки, такие как подстановочный знак *
. Когда шаблон не содержит символов-глобусов *PATTERN*
, которые ищет команда , поэтому в предыдущем примере отображались все файлы, содержащие шаблон поиска в своих именах.
Подстановочный знак - это символ, используемый для обозначения нуля, одного или нескольких символов. Например, для поиска всех .md
файлов в системе вы должны использовать:
locate *.md
Чтобы ограничить результаты поиска, используйте -n
параметр, за которым следует количество результатов, которые вы хотите отобразить. Например, следующая команда будет искать все .py
файлы и отображать только 10 результатов:
locate -n 10 *.py
По умолчанию locate
выполняет поиск с учетом регистра. Опция -i
( --ignore-case
) указывает locate
на игнорирование регистра и запуск поиска без учета регистра.
locate -i readme.md
/home/linuxize/p1/readme.md
/home/linuxize/p2/README.md
/home/linuxize/p3/ReadMe.md
Чтобы отобразить количество всех совпадающих записей, используйте параметр -c
( --count
). Следующая команда вернет номер всех файлов, содержащихся .bashrc
в их именах:
locate -c .bashrc
6
По умолчанию locate
не проверяет, существуют ли найденные файлы в файловой системе. Если вы удалили файл после последнего обновления базы данных, если файл соответствует шаблону поиска, он будет включен в результаты поиска.
Чтобы отобразить только имена файлов, которые существуют в данный момент, locate
используйте параметр -e
( --existing
). Например, следующее вернет только существующие .json
файлы:
locate -e *.json
Если вам нужно выполнить более сложный поиск, вы можете использовать опцию -r
( --regexp
), которая позволяет выполнять поиск, используя базовое регулярное выражение вместо шаблонов. Эта опция может быть указана несколько раз.
Например, для поиска всех файлов .mp4
и .avi
файлов в вашей системе и игнорирования регистра вы должны выполнить:
locate --regex -i "(\.mp4|\.avi)"
Вывод
Команда locate
ищет в файловой системе файлы и каталоги, чье имя соответствует заданному шаблону. Синтаксис команды легко запомнить, а результаты отображаются практически мгновенно.
Для получения дополнительной информации обо всех доступных опциях типа locate
команды man locate
в вашем терминале.