Na minha cabeça, tanto locate
e find
encontra um arquivo, mas por que locate
roda tão rápido?
De acordo com sua documentação, locate
:
DESCRIÇÃO
locate lê um ou mais bancos de dados preparados por updatedb(8) e grava nomes de arquivos que correspondam a pelo menos um dos PATTERNs na saída padrão, um por linha.
Quais arquivos estão nesse banco de dados e todos os arquivos criados nesse banco de dados?
find
pesquisa o próprio sistema de arquivos. Ele é otimizado para informar tudo (incluindo o conteúdo de arquivos que podem ter muitos gigabytes de tamanho) um determinado arquivo para um caminho específico e para ser gravado com frequência.locate
pesquisa um banco de dados gerado a partir da indexação anterior do sistema de arquivos. A base de dados é otimizada para os tipos de buscas quelocate
realiza.O banco de dados é preenchido por
updatedb
. Os arquivos nele são determinados por quais opções são passadas para oupdatedb
. Os arquivos estarão nele, a menos que estejam fora das áreas pesquisadas ou se tiverem sido criados desde aupdatedb
última execução.Por exemplo, minha instalação padrão do Ubuntu tem:
No
/etc/updatedb.conf
arquivo.Portanto, ele indexa tudo, exceto certos diretórios que não devem ser índices por vários (mas espero bastante óbvios) motivos e vários tipos de sistemas de arquivos diferentes (normalmente aqueles que contêm dados secretos, dados em sistemas de arquivos remotos e APIs de sistema).