Главная >> Команды >> Команда locate в Linux

Команда locate в Linux

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

Обновление базы данных locate происходит автоматически, как правило, раз в сутки. Настроить желаемый интервал между сканированиями системы можно с помощью планировщика задач Cron.


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

Синтаксис и опции locate

В эмуляторе терминала команда locate записывается в таком формате:

locate опции шаблон_для_поиска

Опции:

  • -A (--all) — выводит только файлы, соответствующие всем заданным шаблонам.
  • -b (--basename) — выводит файл, если его название соответствует шаблону.
  • -c (--count) — вместо адресов выводит количество найденных файлов.
  • -d (--database) — меняет базу данных для поиска, установленную по умолчанию, на пользовательскую.
  • -e (--existing) — поиск файлов, существующих на момент запуска команды.
  • -L (--follow) — при применении --existing заставляет команду использовать символические ссылки вместо жёстких. Опция --follow включена по умолчанию.
  • -h (--help) — выводит справку.
  • -i (--ignore-case) — делает команду нечувствительной к регистру.
  • -p (--ignore-spaces) — заставляет команду игнорировать пробелы и знаки пунктуации.
  • -t (--transliterate) — игнорирует диакритические знаки.
  • -l, -n (--limit) — ограничивает количество файлов в выводе команды.
  • -P (--nofollow) — заставляет команду использовать жёсткие ссылки вместо символических.
  • -0 (--null) — включает использование NUL в качестве разделителя строк.
  • -S (--statistics) — выводит статистику по каждой базе данных вместо поиска файлов.
  • -q (--quiet) — запрещает команде выводить сообщения об ошибках до завершения поиска.
  • -r (--regexp) — поиск с использованием регулярных выражений.
  • -V (--version) — показывает версию установленной в системе утилиты locate.
  • -w (--wholename) — выводит файл, если в его названии либо адресе есть символы, соответствующие шаблону.

Примеры использования locate

Если нужно найти файлы, соответствующие сразу нескольким шаблонам, используется опция -A. Шаблоны разделяются пробелом:

locate -A zima 64

Опция -w включена по умолчанию, поэтому locate проверяет на соответствие шаблону не только имена файлов, но и названия папок, в которых эти файлы расположены. Например, если Документ1.ods находится по адресу Компьютер/БухалтерияДоки/ВсеДокументы/, он будет выведен командой при использовании шаблонов «Док», «Бух» и «Все». Для того, чтобы в результатах отображались только файлы с именами, в которых присутствует шаблон, применяется опция -b.

Для сравнения:

locate -b zima

locate -w zima

На скриншоте видно, как команда обрабатывает запросы с каждой из упомянутых опций.

Команда locate чувствительна к регистру. Если, к примеру, шаблон имеет вид «GrEEn», файлы с именами green и GREEN в процессе поиска будут игнорироваться. Для того, чтобы найти все документы, независимо от наличия строчных и заглавных букв в их названиях, используется опция -i.

Порой в названиях файлов встречаются буквы с диакритическими знаками (умлаутами, акутами, тремами и прочими). Эти документы не будут найдены, если  в команде используется шаблон, состоящий из обычных букв. И наоборот, если в шаблоне есть буквы с диакритическими знаками, команда проигнорирует файлы, в названиях которых отсутствуют аналогичные символы. «Стереть» разницу между буквами с диакритическими знаками и без них можно при помощи опции -t.

По умолчанию команда locate осуществляет поиск в собственной базе данных mlocate.db, однако, умеет работать и с пользовательскими БД. Для этого предусмотрена следующая опция: --database.

locate --database main-user-tor-database1.db bin/raw

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

locate --database main-user-tor-database1.db:main-user-tor-database2.db bin/raw

Результаты будут выведены отдельно для каждой базы данных, в той же очерёдности, с которой базы данных были перечислены в запросе.

Файлы, добавленные в систему после обновления стандартной базы данных, не обнаруживаются командой locate. Также в результатах могут появляться уже несуществующие (удалённые) документы. Для того, чтобы актуализировать выдачу, используется опция -e.

Глядя на скриншот, легко сравнить результаты поиска с опцией и без неё.

Кроме того, можно обновить базу данных вручную, выполнив в терминале команду:

sudo updatedb

Выводы

Команда locate linux позволяет быстро и легко найти файлы, затерявшиеся в недрах системы. Если какие-то аспекты её работы остались для вас непонятными, задавайте вопросы в комментариях.

Оставьте свой Email для того чтобы получать анонсы новых статей и полезную информацию о Linux по электронной почте


Pеклама
Посмотреть детали

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

Creative Commons License
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

7 комментариев к “Команда locate в Linux”

    • Да я это понимаю и знаю :). Просто нашел для интереса статью на другом сайте. Так там в первых строчках конкретно написано, что locate нужно установить. А уж потом всё остальное.

      Ответить
  1. > Файлы, добавленные в систему ДО обновления стандартной базы данных,
    > не обнаруживаются командой locate.

    Может быть тут имелось ввиду не ДО а ПОСЛЕ?

    Ответить
  2. >> Для того, чтобы актуализировать выдачу, используется опция -e.

    А как можно актуализировать выдачу, не прошерстив всю реально существующую структуру каталогов? Ну, то есть, создали мы файл ПОСЛЕ обновления стандартной базы данных - как его найдет locate, хоть с опцией, хоть без?
    Или это работает только в одну сторону - не показывать файлы, которых реально нет?

    Ответить

Оставьте комментарий