Como o 'whereis' localiza arquivos tão rapidamente? [duplicado]

2

Recentemente, eu estava tentando encontrar um arquivo binário com um certo nome. Decidi usar o utilitário de pesquisa whereis (parte do pacote util-linux). Isso conseguiu localizar o arquivo na metade do tempo do que tentar usar o comando find comparável.

Eu também usei o comando locate , que produz resultados em velocidades semelhantes a whereis .

Como esses comandos conseguem encontrar arquivos tão rapidamente em comparação com o comando find ?

    
por Matt Brown 16.11.2015 / 21:57

1 resposta

4

find faz um passeio cego de todo o sistema de arquivos procurando por correspondências. Demora tanto tempo porque ele está olhando para todos os arquivos em todos os diretórios e não parando até cobrir todo o sistema de arquivos.

locate também cobre todo o sistema de arquivos, mas acelera as coisas tendo um banco de dados pré-construído (atualizado com o comando updatedb ) que ele usa para encontrar arquivos correspondentes.

whereis e which também pesquisam diretórios procurando por arquivos, mas eles pesquisam apenas um subconjunto muito específico de locais no sistema de arquivos (geralmente especificado por variáveis de ambiente como $PATH e $MANPATH conforme apropriado). Eles também param a primeira ocorrência, levando a tempos de execução mais rápidos.

    
por 16.11.2015 / 22:01