Команда Linux locate

Опубликовано admin - сб, 07/30/2022 - 08:24

В Linux команда locate выполняет ту же задачу, что и find, но она ведёт поиск не по всей файловой системе, а по базе данных, обновляемой ежесуточно.

Использование команды Linux locate с примерами

Для получения свежего списка файлов можно вручную запустить updatedb для обновления базы данных.

Команда locate чувствительна к регистру.

Содержание

Синтаксис

$ locate [OPTION]... PATTERN...

Опции

-b, --basename
Искать файл по части имени
-c, --count
Выводить файл при совпадении имени шаблону
-d, --database DBPATH
Искать файлы в пользовательской базе данных
-i, --ignore-case
Поиск без учета регистра
-l, --limit LIMIT
Останавливаться после лимита в количестве файлов
-0, --null
Использовать NUL вместо новой строки
-N, --literal
Не заключать имена файлов в кавычки
-r, --regexp
Интерпретировать шаблоны как базовые регулярные выражения (медленно)
   --regex
Интерпретировать шаблоны как расширенные регулярные выражения (медленно)
-w, --wholename
Поиск по любому из символов имени файла

Установка

Установка в Arch Linux:

oleg@mobile:~:$ sudo pacman -S locate
разрешение зависимостей...
проверка конфликтов...

Пакеты (2) liburing-2.2-1  plocate-1.1.16-1

Будет загружено:    0,25 MiB
Будет установлено:  0,64 MiB

:: Приступить к установке? [Y/n] y
:: Получение пакетов...
 plocate-1.1.16-1-x86_64                              130,5 KiB   373 KiB/s 00:00 [###############################################] 100%
 liburing-2.2-1-x86_64                                128,3 KiB   782 KiB/s 00:00 [###############################################] 100%
 Total (2/2)                                          258,8 KiB   462 KiB/s 00:01 [###############################################] 100%
(2/2) проверка ключей                                                             [###############################################] 100%
(2/2) проверка целостности пакета                                                 [###############################################] 100%
(2/2) загрузка файлов пакетов                                                     [###############################################] 100%
(2/2) проверка конфликтов файлов                                                  [###############################################] 100%
(2/2) проверка доступного места                                                   [###############################################] 100%
:: Обработка изменений пакета...
(1/2) установка liburing                                                          [###############################################] 100%
(2/2) установка plocate                                                           [###############################################] 100%

:: Запуск post-transaction hooks...
(1/4) Creating system user accounts...
Creating group 'locate' with GID 21.
(2/4) Reloading system manager configuration...
(3/4) Creating temporary files...
(4/4) Arming ConditionNeedsUpdate...
oleg@mobile:~:$


 Установка в Ubuntu:

$ sudo apt install locate

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

Обновление базы данных

Перед использованием утилиты крайне желательно обновить базу данных:

$ sudo updatedb

Поиск файла

Самым простым способом использования утилиты является поиск файла по шаблону:

oleg@mobile:~/webprojects/linuxcookbook.ru/articles:$ locate locate
/home/http/linuxcookbookru/howto/mini/Ext2fs-Undeletion-Dir-Struct.old/locate.html
/home/oleg/webprojects/linuxcookbook.ru/articles/linux-locate
/home/oleg/webprojects/linuxcookbook.ru/content/howto/mini/Ext2fs-Undeletion-Dir-Struct/locate.html
/home/oleg/webprojects/linuxcookbook.ru/img/locate-command-1.jpg
/home/oleg/webprojects/linuxcookbook.ru/img/locate-command.jpg
/home/oleg/webprojects/websites/PHP/f/imagecolorallocate.html
/home/oleg/webprojects/websites/PHP/f/imagecolordeallocate.html
/usr/bin/fallocate
/usr/bin/locate
...

Форматирование вывода

Список выводимых файлов может быть очень длинным. В связи с этим рекомендуется добавить команду less:

oleg@mobile:~/webprojects/linuxcookbook.ru/articles:$ locate pwd | less
/etc/.pwd.lock
/home/http/base/inc/lang/ar/resendpwd.txt
/home/http/base/inc/lang/az/resendpwd.txt
/home/http/base/inc/lang/bg/resendpwd.txt
/home/http/base/inc/lang/ca/resendpwd.txt
/home/http/base/inc/lang/ca-valencia/resendpwd.txt
/home/http/base/inc/lang/cs/resendpwd.txt
/home/http/base/inc/lang/da/resendpwd.txt
/home/http/base/inc/lang/de/resendpwd.txt
/home/http/base/inc/lang/de-informal/resendpwd.txt
/home/http/base/inc/lang/el/resendpwd.txt
...

Вывод лишь существующих файлов

Иногда команда locate выводит файлы, которые были уже удалены, так как команда автоматически обновляется лишь раз в сутки. Устранить это можно обновлением базы командой $ sudo updatedb, либо использованием опции -e, которая позволит вывести лишь существующие файлы:

oleg@mobile:~/webprojects/linuxcookbook.ru/articles:$ locate -e pwd
/etc/.pwd.lock
/home/http/base/inc/lang/ar/resendpwd.txt
/home/http/base/inc/lang/az/resendpwd.txt
/home/http/base/inc/lang/bg/resendpwd.txt
/home/http/base/inc/lang/ca/resendpwd.txt
/home/http/base/inc/lang/ca-valencia/resendpwd.txt
/home/http/base/inc/lang/cs/resendpwd.txt
/home/http/base/inc/lang/da/resendpwd.txt
/home/http/base/inc/lang/de/resendpwd.txt
...

Подсчёт существующих файлов

oleg@mobile:~/webprojects/linuxcookbook.ru/articles:$ locate -c pwd
126
oleg@mobile:~/webprojects/linuxcookbook.ru/articles:$ 

Вывод содержит лишь количество файлов, содержащих строку pwd в имени.

Количество результатов поиска

Для ограничения количества результатов поиска используется опция -n, к которой через пробел добавляется число необходимых строк:

oleg@mobile:~/webprojects/linuxcookbook.ru/articles:$ locate -n 5 pwd
/etc/.pwd.lock
/home/http/base/inc/lang/ar/resendpwd.txt
/home/http/base/inc/lang/az/resendpwd.txt
/home/http/base/inc/lang/bg/resendpwd.txt
/home/http/base/inc/lang/ca/resendpwd.txt
oleg@mobile:~/webprojects/linuxcookbook.ru/articles:$ 

Игнорирование файла с учётом регистра

В этом случае используется опция -i:

oleg@mobile:~/webprojects/linuxcookbook.ru/articles:$ locate -i pwd
/etc/.pwd.lock
/home/http/base/inc/lang/ar/resendpwd.txt
/home/http/base/inc/lang/az/resendpwd.txt
/home/http/base/inc/lang/bg/resendpwd.txt
/home/http/base/inc/lang/ca/resendpwd.txt
/home/http/base/inc/lang/ca-valencia/resendpwd.txt
...

Поиск файла с точным именем

В данном случае используется опция -r:

oleg@mobile:~/webprojects/linuxcookbook.ru/articles:$ locate -r pwd
/etc/.pwd.lock
/home/http/base/inc/lang/ar/resendpwd.txt
/home/http/base/inc/lang/az/resendpwd.txt
/home/http/base/inc/lang/bg/resendpwd.txt
/home/http/base/inc/lang/ca/resendpwd.txt
/home/http/base/inc/lang/ca-valencia/resendpwd.txt
/home/http/base/inc/lang/cs/resendpwd.txt
/home/http/base/inc/lang/da/resendpwd.txt
/home/http/base/inc/lang/de/resendpwd.txt
/home/http/base/inc/lang/de-informal/resendpwd.txt
...

Были найдены все файлы в имени которых присутствуют буквы pwd.

Выводы

В связи с тем, что в Linux команда locate используется для получения мгновенных результатов, она является незаменимой утилитой, когда скорость является приоритетом.

Поделиться с друзьями