locate localiza o caminho de um arquivo, mas o arquivo não existe nesse caminho [duplicado]

5

Eu escrevi:

locate Origin90SR2DVD.iso

E recebi o caminho onde o arquivo está localizado:

/home/david/Origin90SR2DVD.iso

Então eu escrevi:

cd /home/david

Eu corri:

ls -lrth

E não consigo encontrar o arquivo Origin90SR2DVD.iso .

Por que o arquivo não está nesse caminho?

    
por Dave 08.05.2015 / 21:16

2 respostas

4

É possível que você tenha o arquivo Origin90SR2DVD.iso no local /home/david quando o arquivo de banco de dados de locate ( /var/lib/mlocate/mlocate.db ) foi atualizado pela última vez por cron (ou por você mesmo). Como locate apenas para os nomes de arquivos no arquivo de banco de dados (é por isso que é rápido) durante a pesquisa, você pode considerar que a técnica não é ao vivo .

Embora locate esteja mostrando a localização do arquivo, é muito possível que o arquivo não esteja presente (pode ser removido ou movido para outro local).

Você tem duas maneiras de ter certeza do que está acontecendo:

  • Você pode atualizar o arquivo de banco de dados locate em sudo updatedb e, em seguida, executar o mesmo comando locate .

  • Como alternativa, você pode usar find para fazer uma pesquisa ao vivo . Para procurar o arquivo em seu diretório inicial recursivamente:

    find ~ -type f -iname 'Origin90SR2DVD.iso' -print -o -path ~/.gvfs -prune
    

    -path ~/.gvfs -prune (graças a Eliah Kagan) é usado para não descermos ao diretório ~/.gvfs durante a pesquisa. Caso contrário, receberemos uma mensagem de permissão negada, já que o diretório é de propriedade de root. Você pode omitir isso (e ver a mensagem) removendo -print -o -path ~/.gvfs -prune .

    Você também pode procurar todos os lugares possíveis na hierarquia do sistema de arquivos. Aqui eu considerei poucos lugares que podem conter o arquivo, será incomum se o seu arquivo for encontrado em qualquer outro diretório.

    sudo find /home /root /opt /usr/local /mnt -type f -iname 'Origin90SR2DVD.iso'
    

EDITAR:

O banco de dados do locate é atualizado por cron diariamente. No meu sistema é executado às 6:25 AM todos os dias (verifique o seu em /etc/crontab ).

Na verdade, anacron executará o trabalho cron para garantir que, se o computador estiver Desligado nesse momento, o trabalho será executado depois que o computador for ligado na próxima vez. Se anacron não estiver disponível, run-parts executará os arquivos (incluindo mlocate ) no diretório /etc/cron.daily apenas no horário mencionado.

    
O comando
por heemayl 08.05.2015 / 21:50
2

Execute sudo updatedb para garantir que seu banco de dados mlocate esteja atualizado.

    
por mkasberg 08.05.2015 / 21:19

Tags