Ответы:
Ответ зависит от версии locate
вы используете, но есть шанс , что это mlocate
, чей updatedb
бежит быстро, избегая делать полное сканирование диска:
mlocate является реализацией locate / updatedb. «M» означает «объединение»: updatedb повторно использует существующую базу данных, чтобы избежать перечитывания большей части файловой системы, что делает updatedb быстрее и не перегружает системный кэш.
(В базе данных хранится метка времени каждого каталога, ctime
или mtime
, в зависимости от того, что новее.)
Как и большинство реализаций updatedb
, mlocate
's' также пропускает файловые системы и пути, которые он настроил игнорировать. По умолчанию нет ни в mlocate
случае «S, но дистрибутивы обычно обеспечивают основной , updatedb.conf
который игнорирует сетевые файловые системы, виртуальные файловые системы и т.д. (см файл конфигурации в Debian , например, это является стандартной практикой в Debian, так ГНУ updatedb
будет выполнено аналогично ).
mtime
его непосредственного родителя.
mlocate
заботится о ctime
и mtime
что означает , что заботится только о том списка записей каталога по - прежнему те же (не удалены или добавлены файлы), что означает , что не заботится о фактических самих файлов. Это верно ?
locate
не grep -R
. Он не читает содержимое файла.
В дополнение к проверке времени модификации, mlocate
также игнорируются некоторые поддеревья файловой системы, которые имеют много неинтересных или потенциально дублирующих файлов, как указано в /etc/updatedb.conf (и описано в man updatedb.conf ):
updatedb
реализации также поддерживают настроенные исключения.)