Если я хочу использовать locate
команду на компьютере с Linux, я обычно запускаю sudo updatedb
сначала для обновления базы данных. Я могу запустить locate
команду на OS X 10.5, но не могу найти updatedb
. Что такое соответствующий updatedb для Mac?
234
locate
в окне OS X он говорит вам, чтобы запуститьsudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
.locate
, вам может быть удобнее использовать интерфейс командной строки для Spotlightmdfind
, поскольку база данных Spotlight почти всегда актуальна и предлагает гораздо больше функциональных возможностей, чем locate.man mdfind
Ответы:
Это
locate.updatedb
на Mac.Для получения дополнительной информации см. Справочную страницу locate.updatedb .
источник
man
страница также утверждает: она обычно запускается один раз в неделю заданием /System/Library/LaunchDaemons/com.apple.locate.plist. (Иman locate
рассказывает об этом сценарии: /usr/libexec/locate.updatedb Script для обновления базы данных locate )sudo ionice -c3 updatedb
который говорит,updatedb
чтобы разделить контроллер ввода-вывода (хорошо), но я не думаю, что эта команда доступна на Mac. Я также скучаю по наличию-r
флага регулярного выражения, который можно использовать с локализацией GNU, хотя я не уверен, что хочу использовать homebrew и установить локализацию GNU, упомянутую @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
Вы можете сделать,
sudo ln -s /usr/libexec/locate.updatedb /usr/local/bin/updatedb
чтобы сделатьupdatedb
команду доступной.источник
Лично я только что установил findutils (использую MacPorts или Homebrew).
Тогда у вас есть GNU locate и updatedb.
updatedb не будет работать без sudo.
Лично я предпочитаю иметь для каждого пользователя, расположенногоb, хотя; если вы sudo, другие пользователи будут знать имена / расположение всех ваших файлов.
У меня есть работа cron:
updatedb --localpaths='/Users/grogs' --output='/Users/grogs/tmp/locatedb'
И в моем .zshrc .bashrc / .bashprofile:
export LOCATE_PATH="~/tmp/locatedb"
источник
gupdatedb
команду, а неupdatedb
одну. К сожалению, эта команда выдала мне ошибку, описанную здесь (где указан ваш SO-ответ). В конце концов я псевдонимыupdatedb
вLC_ALL=’C’ sudo updatedb
качестве временного решения, но я не знаю , если это долгосрочное решение./opt/local/libexec/gnubin
в начале вашего пути, если вы хотите, чтобыcoreutils
иfindutils
установленныйmacports
был доступен с их оригинальными именами (а не с ихg
префиксными версиями).Если вы запустите locate без предварительного обновления базы данных, у вас будет возможность увидеть рекомендуемый путь ОС по ее выводу.
источник