«найти» команду в терминале. Почему так быстро?

7

Поиск ключевого слова в терминале linux с помощью команды locate дает ответ за короткое время. Каков алгоритм поиска?

    
задан algosig 07.01.2014 в 18:43
источник

2 ответа

8

Система создает базу данных всех файлов на компьютере. Поэтому, когда вы просматриваете locate , команда действительно не проверяет всю файловую систему, а только базу данных, она выполняет алгоритм бинарного поиска, который быстро, как поиск слова в словаре. Вот почему это так быстро (и удобно).

Такая база данных регулярно обновляется; вы, возможно, видели, как это работает, когда вы устанавливаете новый пакет: updating mlocate... . Вы можете найти дополнительную информацию о том, как это работает, выполнив в терминале:

man locate

man updatedb
    
ответ дан darent 07.01.2014 в 18:47
источник
4

Он использует базу данных. База данных, поиск по умолчанию, находится по адресу:

/var/lib/mlocate/mlocate.db

Недостатком локации является то, что это НЕ реальное время.

На странице man:

  

ОПИСАНИЕ          locate считывает одну или несколько баз данных, подготовленных updatedb (8), и записывает          имена файлов, соответствующие, по меньшей мере, одному из PATTERNs для стандартного вывода,          по одной в строке.

    
ответ дан Rinzwind 07.01.2014 в 18:45
источник

Ознакомьтесь с другими вопросами по меткам