Команда 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



Добавить комментарий

Автору будет очень приятно получить обратную связь.

Комментариев 0