Si quiero usar el locate
comando en una máquina Linux, generalmente ejecuto sudo updatedb
primero para actualizar la base de datos. Puedo ejecutar el locate
comando en OS X 10.5 pero no puedo encontrarlo updatedb
. ¿Cuál es la actualización actualizada correspondiente para Mac?
234
locate
por primera vez en un cuadro de OS X, le indica que ejecutesudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
.locate
, puede que le resulte más conveniente usar la interfaz de línea de comando para Spotlightmdfind
, ya que la base de datos de Spotlight está casi siempre actualizada y ofrece mucha más funcionalidad que localizar.man mdfind
Respuestas:
Está
locate.updatedb
en Mac.Para obtener más información, consulte la página del comando man localizar.updatedb .
fuente
man
página también afirma: Por lo general, el trabajo /System/Library/LaunchDaemons/com.apple.locate.plist lo ejecuta una vez a la semana. (Yman locate
le dice a uno sobre ese script: /usr/libexec/locate.updatedb Script para actualizar la base de datos de localización )sudo ionice -c3 updatedb
que me diceupdatedb
que comparta bien el controlador de E / S (io nice), pero no creo que este comando esté disponible en Mac. También extraño tener la-r
bandera de expresiones regulares que se pueden utilizar con la GNU localizar, aunque no estoy seguro de que quiera utilizar e instalar el homebrew GNU locate 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
Puede hacer
sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedb
que elupdatedb
comando esté disponible.fuente
Personalmente, acabo de instalar findutils (use MacPorts o Homebrew).
Entonces tienes GNU localizar y actualizadob.
updatedb no funcionará sin sudo.
Sin embargo, personalmente prefiero tener una ubicación por usuariob; si sudo otros usuarios sabrán los nombres / ubicaciones de todos sus archivos.
Tengo un trabajo cron para ejecutar:
updatedb --localpaths='/Users/grogs' --output='/Users/grogs/tmp/locatedb'
Y en mi .zshrc .bashrc / .bashprofile:
export LOCATE_PATH="~/tmp/locatedb"
fuente
gupdatedb
comando, noupdatedb
uno. Lamentablemente, este comando me dio un error descrito aquí (donde se hace referencia a su respuesta SO). En última instancia He aliasupdatedb
queLC_ALL=’C’ sudo updatedb
como una solución, pero no sé si esto es una solución a largo plazo./opt/local/libexec/gnubin
al comienzo de su ruta, si desea quecoreutils
efindutils
instalado pormacports
esté disponible con sus nombres originales (y no susg
versiones prefijadas).Si ejecuta localizar sin actualizar primero la base de datos, tiene la oportunidad de ver la forma recomendada del sistema operativo por su salida.
fuente