Поиск ключевого слова в терминале Linux с помощью команды locate
дает ответ в течение короткого времени. Какой алгоритм поиска используется?
Система создает базу данных всех файлов на компьютере. Таким образом, при поиске через locate
команда на самом деле не проверяет всю файловую систему, а только базу данных, она выполняет алгоритм двоичного поиска, который очень похож на поиск слова в словаре. Вот почему это так быстро (и удобно).
Такая база данных регулярно обновляется; вы, возможно, видели, как это иногда работает при установке нового пакета: updating mlocate...
. Вы можете найти больше информации о том, как это работает, выполнив в терминале:
man locate
man updatedb
Он использует базу данных. База данных, в которой выполняется поиск по умолчанию, расположена по адресу:
/var/lib/mlocate/mlocate.db
Недостатком локализации является то, что она НЕ работает в реальном времени.
Со страницы руководства:
ОПИСАНИЕ locate читает одну или несколько баз данных, подготовленных updatedb (8), и записывает имена файлов, соответствующие по крайней мере одному из PATTERN, в стандартный вывод, по одному на строку.