Como uso o comando localizar dentro de um diretório especificado?
16
Estou usando o locatecomando no Linux. Meu uso atual dele pesquisa por todo o sistema de arquivos. Eu só quero que ele procure dentro de um diretório específico. Como posso fazer isso?
TLDR: Aqui está um apelido de terminal para fazer a locatepesquisa em um diretório especificado: Quando alias my_locate="updatedb -U /path/to/yourdir -o /path/to/your_dir_locate.db; locate -d /path/to/dir_locate.db " o apelido estiver em vigor, digite o tipo de terminal my_locate *foo*e você estará pronto para as corridas. Você pode concatenar as atualizações do banco de dados e localizar a pesquisa usando o caractere de dois pontos para concaturar os bancos de dados. rtfm: linux.die.net/man/8/updatedb
Eric Leschinski
Respostas:
11
Outra abordagem seria usar a correspondência de padrões em locate:
+1 Esta é a resposta correta. Observe que, se você incluir o curinga, os limites se tornarão fixos. Isso está no exemplo acima, $ locate '/usr/lib64/*tmpfile'não retornará resultados.
xofer 21/09/11
Se você quiser mais controle do que wildcards simples podem oferecer, você sempre pode canalizar os resultados do locatemeio grep.
Ladadadada
5
Crie um banco de dados slocate para seu diretório específico com:
updatedb -U /path/to/directory
e pesquise com:
locate <search_string>
ATUALIZAR
Isso funciona bem no meu sistema Gentoo, mas o CentOS não inclui a -Uopção. Então, você pode tentar abaixo:
"localizar -U" gera um erro de opção inválida ... Acho que você quis dizer "atualizadob -U"? Também é bom observar que isso requer uma reconstrução do mlocate.db (updatedb) se você quiser procurar outro diretório.
gharper
Oh, no meu Gentoo funciona bem, mas o CentOS não inclui essa opção.
locate
pesquisa em um diretório especificado: Quandoalias my_locate="updatedb -U /path/to/yourdir -o /path/to/your_dir_locate.db; locate -d /path/to/dir_locate.db "
o apelido estiver em vigor, digite o tipo de terminalmy_locate *foo*
e você estará pronto para as corridas. Você pode concatenar as atualizações do banco de dados e localizar a pesquisa usando o caractere de dois pontos para concaturar os bancos de dados. rtfm: linux.die.net/man/8/updatedbRespostas:
Outra abordagem seria usar a correspondência de padrões em
locate
:Compare a saída dos comandos abaixo:
locate /usr/lib*tmpfile*
dá o mesmo resultado.fonte
$ locate '/usr/lib64/*tmpfile'
não retornará resultados.locate
meiogrep
.Crie um banco de dados slocate para seu diretório específico com:
e pesquise com:
ATUALIZAR
Isso funciona bem no meu sistema Gentoo, mas o CentOS não inclui a
-U
opção. Então, você pode tentar abaixo:Crie o banco de dados com:
e pesquise:
fonte
updatedb: can not change group of file 'db.db.kHhzFz' to 'mlocate': Operation not permitted
verifique como usar o comando updatedb como um usuário comum no linux .A resposta mais simples que consigo pensar é
A melhor solução pode ser usar "find" e suas opções de caminho ...
fonte
A maneira mais fácil é como no exemplo a seguir:
Mude
$PWD
para o seu diretório específico.O exemplo acima criará seu banco de dados local apenas para o diretório específico.
fonte