Команда 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 позволяет быстро и легко найти файлы, затерявшиеся в недрах системы. Если какие-то аспекты её работы остались для вас непонятными, задавайте вопросы в комментариях.

4 комментария

  1. Аватар Valery 20 марта, 2020 Ответить
    • Аватар Валерий 20 марта, 2020 Ответить
  2. Аватар Валерий 20 марта, 2020 Ответить
    • Аватар Valery 20 марта, 2020 Ответить

Ответить

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: