Como é que o unix localizar comando ainda mostra arquivos / pastas que não estão mais lá?

StackOverflow https://stackoverflow.com/questions/1060919

Pergunta

Recentemente, mudei toda a minha área de desenvolvimento web local sobre a usar MacPorts coisas, ao invés de usar MAMP no meu Mac. Fui ficando em Python / Django e realmente não precisa Mamp mais.

A coisa é, eu tenho MAMP desinstalado a partir da pasta Applications, com as preferências arquivo também, mas como é que quando eu executar o 'localizar MAMP' comando no Terminal ele ainda mostra todos os meus / Applications / MAMP / stuff como se fosse tudo ainda está aí? E quando eu 'cd' em / Applications / MAMP / ela não existe?

Algo a ver com localizar sendo uma espécie de sistema de índice de busca, portanto, coisas essas filepaths velhos são armazenados em cache? Por favor, explique por que, e como classificá-lo para que eles não mostrar mais.

Foi útil?

Solução

Você tem a idéia certa: locate usa um banco de dados chamado 'locatedb'. É normalmente atualizado por tarefas agendadas do sistema (não tenho certeza que no OS X); você pode forçar uma atualização com o comando updatedb. Consulte http://linux-sxs.org/utilities/updatedb.html entre outros .


Além disso, se você não encontrar arquivos que você espera, note que este importante ressalva da seção BUGS do OSX' localizar (1) homem-page :

The locate database is typically built by user ''nobody'' and the locate.updatedb(8) utility skips directories which are not readable for user ''nobody'', group ''nobody'', or world. For example, if your HOME directory is not world-readable, none of your files are in the database.

Outras dicas

As outras respostas estão corretas sobre a necessidade de atualizar o banco de dados localizar. Eu tenho este alias para atualizar meu localizar DB:

alias update_locate='sudo /usr/libexec/locate.updatedb'

Na verdade, eu não use localizar tudo o que muito mais agora que eu encontrei mdfind . Ele usa o índice de arquivo holofotes que OSX é muito melhor em manter-se atualizado em relação ao locatedb. Ele também tem um pouco mais poder no que pode pesquisar a partir da linha de comando.

Na verdade, os localizar pesquisas de comando por meio de um índice, que é por isso que é muito rápido. O índice é gerado pelo updatedb comando, que geralmente é executado como uma nightly ou trabalho semanal.

Assim, para atualizá-lo manualmente, basta executar updatedb .

De acordo com a página do homem, seu banco de dados é atualizado uma vez por semana:

NAME
     locate.updatedb -- update locate database

SYNOPSIS
     /usr/libexec/locate.updatedb

DESCRIPTION
     The locate.updatedb utility updates the database used by locate(1).  It is typically run once a week by
     the /etc/periodic/weekly/310.locate script.

Dê uma olhada na página localizar o homem

http://unixhelp.ed.ac.uk/CGI / man-cgi? localizar + 1

Você verá que localizar pesquisas um banco de dados, não o seu sistema de arquivos real. Você pode atualizar o banco de dados usando o comando updatedb.

Além disso, uma vez que é um banco de dados, a menos que você faz atualizá-lo regularmente, localizar arquivos find wouln't que estão em seu sistema de arquivos que Arn't no banco de dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top