Se eu quiser usar o locate
comando em uma máquina Linux, geralmente corro sudo updatedb
primeiro para atualizar o banco de dados. Eu posso executar o locate
comando no OS X 10.5, mas não consigo encontrar updatedb
. Qual é o updateb correspondente para o mac?
234
locate
pela primeira vez em uma caixa do OS X, ele diz para você executarsudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
.locate
, talvez seja mais conveniente usar a interface da linha de comandos para o Spotlightmdfind
, pois o banco de dados do Spotlight está quase sempre atualizado e oferece muito mais funcionalidade do que a localização.man mdfind
Respostas:
Está
locate.updatedb
no Mac.Para obter mais informações, consulte a página do manual find.updatedb .
fonte
man
página também afirma: Normalmente, é executada uma vez por semana pelo trabalho /System/Library/LaunchDaemons/com.apple.locate.plist. (Eman locate
diz um sobre esse script: /usr/libexec/locate.updatedb Script para atualizar o banco de dados localizar )sudo ionice -c3 updatedb
que dizupdatedb
para compartilhar bem o controlador de E / S (io nice), mas não acho que esse comando esteja disponível no mac. Eu também sinto falta de ter a-r
bandeira de expressão regular que pode ser usado com o GNU localizar, embora eu não tenho certeza se quero usar homebrew e instalar o GNU localizar mencionado por @GrogsThe 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
Você pode fazer
sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedb
para disponibilizar oupdatedb
comando.fonte
Pessoalmente, acabei de instalar o findutils (use MacPorts ou Homebrew).
Então você tem a localização e atualização do GNUb.
updatedb não funcionará sem o sudo.
Pessoalmente, prefiro ter um por usuário localizado; se você sudo, outros usuários saberão os nomes / locais de todos os seus arquivos.
Eu tenho um trabalho cron para executar:
updatedb --localpaths='/Users/grogs' --output='/Users/grogs/tmp/locatedb'
E no meu .zshrc .bashrc / .bashprofile:
export LOCATE_PATH="~/tmp/locatedb"
fonte
gupdatedb
comando, nãoupdatedb
um. Infelizmente, este comando me deu um erro descrito aqui (onde sua resposta ao SO é referenciada). Em última análise, eu aliasupdatedb
aLC_ALL=’C’ sudo updatedb
como uma solução, mas eu não sei se esta é uma solução a longo prazo./opt/local/libexec/gnubin
no início do seu caminho, se você quiser que ocoreutils
efindutils
instaladomacports
esteja disponível com seus nomes originais (e não com suasg
versões pré-fixadas).Se você executar o local sem primeiro atualizar o banco de dados, terá a chance de ver o caminho recomendado pelo sistema operacional pela saída.
fonte