Какие папки индексируются / покрываются "найти"
На OS X я думаю, что БД locate заполняется с помощью команды:
sudo /usr/libexec/locate.updatedb
Но, похоже, что locate не находит ничего внутри или ниже ~/
Должен ли locate.updatedb индексировать мою домашнюю папку по умолчанию? Если это так, какие-либо предложения или идеи, почему это не так? Если он не индексирует ~/ по умолчанию, есть ли причины не индексировать эту иерархию папок? Если нет, то как мне это настроить?
Кроме того, когда я запускаю locate.updatedb из ~/ (без полномочий root), это работает. Когда я запускаю его из чего-либо ниже (например, ~/Desktop/), я получаю следующие ошибки:
shell-init: error retrieving current directory: getcwd: cannot access parent directories: Permission denied
find: .: Permission denied
2 ответа
Locate запускается от имени "nobody", чтобы другие пользователи не могли видеть "ваши" файлы в базе данных locate. Поскольку ваша учетная запись является единственной, у которой есть право просматривать ваши файлы, программа locate не видит их. Даже если ваша учетная запись является единственным локальным пользователем, это ограничение применяется. Когда ты sudo
сценарий locate.updatedb, find
Команда, которую он порождает, специально запускается как непривилегированная. Хотя вы можете изменить сценарий, чтобы предотвратить эту проблему, я не могу сказать, что он рекомендуется.
Кроме того, локализация не включена по умолчанию, так как предполагается, что Spotlight/MDS лучше для большинства людей. Я бы предложил попробовать команду mdfind. Если вы решили, что хотите запускать locate регулярно, выполните sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
загрузить свою запущенную работу для регулярной переиндексации.
Можно найти, чтобы искать почти везде, изменив /usr/libexec/locate.updatedb
,
Изменить:
if [ "$(id -u)" = "0" ]; then
сказать,
if [ "$(id -u)" = "1" ]; then
Некоторое снижение безопасности. Используйте только на персональном компьютере.