O programa de localização procura no banco de dados todos os nomes de caminho que correspondem ao padrão especificado. A base de dados do banco de dados é recalculada periodicamente (geralmente semanalmente ou diariamente) e contém os nomes de caminho de todos os arquivos acessíveis ao público .
Tente mdfind, em vez disso, localize
Atualizado2:
mdfind -name texto que é mais preciso. Apenas o texto mdfind fornece arquivos que também contêm texto. - David Krmpotic
$ ls -la /var/db/locate.database -r - r - r-- 1 ninguém wheel 19463861 6 de abril 20:08 /var/db/locate.database $ localize david.jpg / Usuários / david / temp /david.jpg
davidhq
1
você deve atualizar sua resposta para a mdfind -name textque for mais precisa. Apenas mdfind textfornece arquivos que também contêm texto.
Davidhq 6/04
3
As permissões podem ser as culpadas, pois a localização aparentemente não pode ler arquivos que não são legíveis pelo mundo. Veja esta resposta da Plundra para mais explicações.
O pacote findutils do homebrew habilita gupdatedbe glocatecomandos que parecem superar algumas das limitações dos utilitários embutidos.
Obrigado! mas agora que eu sei mdutil, faz sentido verificar isso? Um caso de uso em que consigo pensar é que posso ativar a nova varredura manualmente com gupdatedb- com o Spotlight não é tão fácil ou levaria mais tempo (também indexa o conteúdo dos arquivos). Existem outras vantagens?
Davidhq
1
A reindexação com o mdutil / spotlight pode demorar um pouco, com certeza. updatedbé mais rápido para isso. glocateparece não ter problemas ao indexar arquivos do sistema, enquanto eu acho que mdfindignora ~ / Library e outros arquivos do sistema. Eu definitivamente acho que eu conseguir mais sucessos com glocatemais de mdfindna maioria das circunstâncias. YMMV.
VogonPoetLaureate
ok, estou testando isso agora. Acho que encontrei algum problema ... primeiro corri sudo gupdatedbe salvei a glocate Radiumsaída. Então eu corri gupdatedbe disse:, /.Trashes: Permission deniedo mesmo para algumas outras pastas. Eu comparei a saída para ambos e foi a mesma! Estranho ...
davidhq
Pelo que você está dizendo, você primeiro executou sudo gupdatedb(executando-o como root) e depois seguiu-o posteriormente gupdatedbcomo um usuário normal que não teria acesso aos arquivos aos quais o usuário raiz teria acesso, o que significa que você obteria permissão negada erros. Se você deseja um banco de dados completo de nomes de arquivos para todo o sistema, continue executando-o como root. Isso expõe seus arquivos a outros usuários do sistema que podem usar o glocatecomando. Mas se você é o único usuário, tudo bem.
VogonPoetLaureate
2
Se você deseja pesquisar no mesmo banco de dados usado pelo Spotlight, pode usar o mdfindcomando como uma alternativa (embora não seja uma substituição exata) para locate:
#SEARCHPATHS="/"
na configuração, não ajudou.-v
opção não parece produzir nenhuma saída adicional: /mdfind -name text
que for mais precisa. Apenasmdfind text
fornece arquivos que também contêm texto.As permissões podem ser as culpadas, pois a localização aparentemente não pode ler arquivos que não são legíveis pelo mundo. Veja esta resposta da Plundra para mais explicações.
O pacote findutils do homebrew habilita
gupdatedb
eglocate
comandos que parecem superar algumas das limitações dos utilitários embutidos.fonte
mdutil
, faz sentido verificar isso? Um caso de uso em que consigo pensar é que posso ativar a nova varredura manualmente comgupdatedb
- com o Spotlight não é tão fácil ou levaria mais tempo (também indexa o conteúdo dos arquivos). Existem outras vantagens?updatedb
é mais rápido para isso.glocate
parece não ter problemas ao indexar arquivos do sistema, enquanto eu acho quemdfind
ignora ~ / Library e outros arquivos do sistema. Eu definitivamente acho que eu conseguir mais sucessos comglocate
mais demdfind
na maioria das circunstâncias. YMMV.sudo gupdatedb
e salvei aglocate Radium
saída. Então eu corrigupdatedb
e disse:,/.Trashes: Permission denied
o mesmo para algumas outras pastas. Eu comparei a saída para ambos e foi a mesma! Estranho ...sudo gupdatedb
(executando-o como root) e depois seguiu-o posteriormentegupdatedb
como um usuário normal que não teria acesso aos arquivos aos quais o usuário raiz teria acesso, o que significa que você obteria permissão negada erros. Se você deseja um banco de dados completo de nomes de arquivos para todo o sistema, continue executando-o como root. Isso expõe seus arquivos a outros usuários do sistema que podem usar oglocate
comando. Mas se você é o único usuário, tudo bem.Se você deseja pesquisar no mesmo banco de dados usado pelo Spotlight, pode usar o
mdfind
comando como uma alternativa (embora não seja uma substituição exata) paralocate
:fonte