Não é possível localizar um diretório usando “locate”? [duplicado]

7

Eu quero localizar um diretório no meu sistema usando o comando "locate". Eu sei que existe um diretório chamado "bench-repo". quando eu estou dando o seguinte comando mostra-me o seguinte erro:

locate: can not stat () '/var/lib/mlocate/mlocate.db': No such file or directory

Por que isso está acontecendo? Como posso encontrar o diretório?

    
por tuxtu 19.07.2016 / 08:36

3 respostas

9

O banco de dados binário usado por locate ( /var/lib/mlocate/mlocate.db ) é atualizado uma vez por dia por cron , portanto, locate não localizará novos arquivos.

Você pode corrigir isso primeiro executando sudo updatedb

sudo updatedb && locate -e bench-repo

É uma boa ideia usar o -e flag para encontrar apenas arquivos que ainda existem.

Ah, e aqui vai uma dica de bônus - você pode obter locate para fornecer uma listagem detalhada passando para ls -l

ls -l $(locate -e bench-repo)
    
por Zanna 19.07.2016 / 08:52
5

Dois causa duas ações

Em geral, quando você não pode locate um arquivo ou porque foi criado recentemente (após a última atualização do banco de dados) ou porque não está nos caminhos onde o updatedb irá pesquisar suas entradas ou corresponderá a algumas regras de remoção (veja abaixo):

  1. Caso seja um novo arquivo ou diretório , se você tiver privilégios suficientes, poderá forçar uma atualização :

    sudo updatedb 
    

    isso atualizará todos e somente os arquivos e diretórios presentes nos caminhos permitidos e não descartados (caso 2).

  2. Caso o arquivo esteja fora dos caminhos verificados pelo updatedb ou esteja correspondendo a algumas regras de exclusões , você poderá modificar o arquivo de configuração e atualizar o banco de dados:

    sudo pico /etc/updatedb.conf  # manual update
    sudo updatedb
    

    De fato, você pode encontrar as chaves dos arquivos / diretórios removidos no arquivo de configuração /etc/updatedb.conf . Procure por PRUNENAMES , PRUNEPATHS ou PRUNEFS , modifique-a e atualize novamente o banco de dados.

Algumas palavras mais sobre locate e updatedb

Para poder locate de um arquivo ou diretório, ele deve ser incluído em seu banco de dados mlocate , geralmente armazenado em /var/lib/mlocate/mlocate.db .

Este banco de dados é atualizado periodicamente . Por padrão, ele é atualizado diariamente e você pode ver o arquivo cron em /etc/cron.daily/mlocate . Se não estiver presente, você pode procurá-lo com locate mlocate | grep cron e ver onde ele está e com que frequência ele é atualizado.

Use man locate e man updatedb para leituras adicionais.

    
por Hastur 19.07.2016 / 10:50
1

Executar

sudo updatedb

antes de localizar. Isso atualizará o banco de dados.

    
por PeeKay 19.07.2016 / 11:52