Existe uma maneira de aumentar a velocidade de 'localização'?

13

Eu estou querendo saber se há uma maneira de aumentar find velocidade no terminal, não faz sentido usar o Google para pesquisar na Internet terá uma velocidade melhor do que fazer uma busca local por strings ou apenas nomes de arquivos.

Eu estou querendo saber se existe uma maneira de ter uma base de indexação local, uma vez construída, no futuro, o comando find pode ser super rápido.

Ou alguma outra sugestão?

Obrigado!

    
por Daniel 12.06.2012 / 23:58

5 respostas

14

Tente usar locate , ele deve fazer o que você quiser.

    
por 13.06.2012 / 00:02
8

Depende muito do seu critério de pesquisa.

Se você procurar por nomes de arquivos ou padrões de nome de arquivo, o locate é muito mais rápido, mas não é adequado para arquivos recém-gerados, já que o índice usado é normalmente atualizado apenas uma vez por dia. Mas se você puder usá-lo, é super rápido.

Mas, com a pesquisa, você pode pesquisar por tamanho de arquivo, idade do arquivo e outras coisas, que não podem ser pesquisadas por localização.

Se você souber onde pesquisar, poderá usar o caminho para delimitar o escopo da pesquisa:

find /some/path -size -10M -size +2M -mtime -365 ...

só pesquisaria arquivos de 2 a 10 M, com no máximo 1 ano em / algum / caminho.

Os programas disponíveis no caminho podem ser pesquisados por quais arquivos de ajuda, lib e configuração com o whereis. Exemplos:

which java
/usr/bin/java

whereis firefox 
firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/share/firefox /usr/share/man/man1/firefox.1.gz
    
por 13.06.2012 / 01:33
6

Use locate

O motivo é que locate usa um banco de dados de todos os diretórios e arquivos existentes que já foram construídos como você imaginou!
link

Em alguns intervalos definidos (e modificáveis), um job runs examina o sistema de arquivos e, em seguida, cria um banco de dados com ele. É então este banco de dados (locatedb), com seus índices apropriados que o comando locate vai contra ao invés de varrer através de seu disco rígido nesse ponto.

Portanto, a vantagem é que é muito rápido em comparação com uma varredura de disco rígido. A desvantagem é que o banco de dados de localização (localizadob) não é 'ativo', portanto, só pode ser usado para arquivos que existiam 'a partir da' última verificação.

Para atualizar o locateb, execute updatedb (ou sudo updatedb , se necessário)

btw eu corri sudo updatedb localmente e levou 3 1/2 segundos! Eu tenho 31.000 arquivos.

    
por 15.06.2012 / 03:30
1

Como outros apontaram, o locate pode ser uma ferramenta melhor para um usuário mais simples.

No entanto, para pesquisas mais complexas, você provavelmente encontrará o resultado.

Uma forma de acelerar a busca é restringir o diretório em que seus arquivos estão, em vez de procurar em todo o diretório raiz.

    
por 13.06.2012 / 16:33
0

para uma única operação de pesquisa; Eu não encontrei nenhuma aceleração; a menos que tente restringir a pesquisa usando as opções find .

No entanto; se você quiser fazer várias operações find no mesmo conjunto de arquivos ; Eu tenho um aumento significativo preenchendo um arquivo temporário com todos os nomes de arquivos e usando grep . É claro que isso não leva em conta arquivos que são adicionados ou excluídos.

    
por 30.03.2017 / 10:38

Tags