Qual é a diferença entre 'locate' e 'find' no Linux?

39

Por que existem dois comandos tão semelhantes no Linux? e normalmente quais são as circunstâncias para usar cada um deles?

    
por zhanwu 14.10.2010 / 17:18

4 respostas

37

find procura no sistema real. É mais lento, mas sempre atualizado e tem mais opções (tamanho, tempo de modificação, ...)

locate usa um banco de dados criado anteriormente (comando updatedb ). É muito mais rápido, mas usa um banco de dados "antigo" e pesquisa apenas nomes ou partes deles.

Em qualquer caso, man find e man locate irão ajudá-lo ainda mais.

    
por 14.10.2010 / 17:23
3

Os comandos locate e find encontrarão um arquivo, mas funcionam de maneiras bem diferentes.

locate funcionará em um modo off-line:

  • Para uma explicação simples, o banco de dados de indexação de arquivos no sistema Unix chamado slocate listará os locais de todos os arquivos que acompanham o sistema Unix. Quando você executa locate , ele usa esse banco de dados para procurar um arquivo específico. O problema com locate é se você acabou de criar um arquivo que você deseja procurar agora, locate não funcionará porque o banco de dados slocate não está atualizado . Para superar esse problema, você pode usar updatedb para atualizar o banco de dados slocate . A execução de locate novamente encontrará o arquivo recém-criado. Assim, muitos administradores de sistema Linux usam um trabalho cron para atualizar regularmente o banco de dados slocate .

find funcionará em um modo on-line / "em tempo real".

  • Na verdade, ele irá procurar todos os diretórios para localizar o arquivo específico especificado e examinar cada arquivo um a um. Portanto, requer muitas chamadas de E / S.

Portanto, com base na natureza, fica claro que o locate é mais rápido que o find, mas o find é em tempo real.

Espero que isso ajude a esclarecer a ideia. Muito bem sucedida. :)

    
por 10.11.2013 / 13:06
0

locate simplesmente procura seu banco de dados e informa a localização do arquivo.

find não usa um banco de dados, ele percorre todos os diretórios e seus sub-diretórios e procura por arquivos que correspondam ao critério dado.

    
por 01.03.2014 / 17:56
0

Uma alternativa ao uso do find é o comando locate. Esse comando geralmente é mais rápido e pode pesquisar o sistema de arquivos inteiro com facilidade. Você pode instalar o comando com apt-get:

sudo apt-get update
sudo apt-get install mlocate

A razão pela qual o locate é mais rápido que o find é porque ele depende de um banco de dados dos arquivos no sistema de arquivos. O banco de dados geralmente é atualizado uma vez por dia com um script cron, mas você pode atualizá-lo manualmente digitando:

sudo updatedb

Execute este comando agora. Lembre-se, o banco de dados deve estar sempre atualizado se você quiser encontrar arquivos recém-adquiridos ou criados.

    
por 15.09.2016 / 13:24

Tags