Как программно добавить папку в Spotlight "не индексировать"?

Есть ли способ программно добавить папку на вкладку «Конфиденциальность» Spotlight? Либо через терминал, либо через Applescript?

Часто я хочу щелкнуть элемент в результатах Spotlight в Finder, чтобы папка этого элемента больше не индексировалась.

Я обнаружил, что если вы

sudo defaults read /Volumes/foo/.Spotlight-V100/VolumeConfiguration.plist Exclusions

вы можете увидеть массив со всеми исключенными элементами.

Но если вы попытаетесь

sudo defaults write  /Volumes/foo/.Spotlight-V100/VolumeConfiguration.plist Exclusions -array-add '/path/to/folder' 

он НЕ добавляется на вкладку «Конфиденциальность» на панели настроек Spotlight и не деиндексируется.

Ответы (5)

Согласно ответу здесь , папка может быть исключена из индексации Spotlight (достижение того же эффекта, что и добавление ее на вкладку «Конфиденциальность», хотя папка фактически не будет там указана) либо

  • добавление .noindexв конец имени папки или
  • создание пустого файла .metadata_never_indexвнутри папки (например, с помощью touch folder/.metadata_never_index)

Вам нужно будет перезапустить Finder после добавления .metadata_never_index, либо killall Finderиз Терминала, либо выйдите из меню Apple, а затем снова войдите в систему. Этот метод не работает в Мохаве и более поздних версиях.

@ankii Вы добавили: «Этот метод не работает в Мохаве и более поздних версиях». Это относится ко всему ответу или только к последнему абзацу?
Только метод .meta_never_index. См. некоторые обсуждения здесь: apple.stackexchange.com/questions/375396/… Я сомневаюсь в High Sierra, но Мохаве, безусловно, ничего об этом не знает. Если вы хотите отредактировать его, поставьте пробел перед тем , что вам нужно... и это устранит неоднозначность того, к какому методу он применяется.
Спасибо. Надеюсь, эти комментарии документируют это достаточно хорошо.
Если .metadata_never_indexне работает в Мохаве, то как мы можем отключить индексирование всего тома? (не только один каталог)
@ ÓscarLópez Я думаю, что это достойно совершенно нового вопроса - этот вопрос касается папок, и я предполагаю, что для изменения этого на уровне громкости потребуются совершенно другие решения.
@Ashley Я спросил здесь, потому что для смонтированного тома раньше .metadata_never_indexбыло достаточно просто создать его в корне, он ведет себя как папка. Я не знаю, что теперь делать :-/
@ ÓscarLópez Извините за задержку - я забыл об этом. Я бы предложил задать новый вопрос с подробностями о вашей системе, о том, что вы пробовали, что вы видите и чего вы ожидали вместо этого. Тогда оставьте здесь еще один комментарий со ссылкой на него, и я постараюсь помочь (хотя ничего не обещаю).

Вы должны остановить и запустить launchdслужбу под названием com.apple.metadata.mds. Так после:

sudo defaults write /Volumes/foo/.Spotlight-V100/VolumeConfiguration.plist Exclusions -array-add '/path/to/folder'

делать:

sudo launchctl stop com.apple.metadata.mds && sudo launchctl start com.apple.metadata.mds

VolumeConfiguration.plistпереехал _

Теперь он находится в /System/Volumes/Data/.Spotlight-V100/VolumeConfiguration.plist.

Вы можете легко редактировать его, используя/uar/libexec/PlistBuddy

Чтение

sudo /usr/libexec/PlistBuddy -c "Print :Exclusions" /System/Volumes/Data/.Spotlight-V100/VolumeConfiguration.plist

Письмо

Нуль указывает на элемент массива или, в данном случае, на начало массива.

sudo /usr/libexec/PlistBuddy -c "Add :Exclusions:0 string '/path/to/folder'" /System/Volumes/Data/.Spotlight-V100/VolumeConfiguration.plist

Удаление

Ноль указывает на первый элемент в массиве

sudo /usr/libexec/PlistBuddy -c "Delete :Exclusions:0 string" /System/Volumes/Data/.Spotlight-V100/VolumeConfiguration.plist

Перезапустите демон

Самое простое решение, чтобы изменения вступили в силу, — это перезагрузка, но вы также Launchdможете перезапустить mdworkers.

sudo launchctl stop com.apple.metadata.mds
sudo launchctl start com.apple.metadata.mds

mdutil

Однако, если вы решите отключить индексирование Spotlight для всего тома, например, если машина является машиной для сборки без головы, вы можете просто использовать mdutil.

mdutil -i off /
Хотя опубликованные вами команды работают так, как указано, они не меняют текущее состояние индексации Spotlight , а добавленные записи не отображаются в Системных настройках > Spotlight > Конфиденциальность . Поэтому, если у вас нет способа также внести изменения в силу, тогда вы не уверены в ценности этого ответа.
Вам нужно будет перезапустить, конечно, или перезапустить демон
Если у вас возникла ошибка при выполнении этих команд (например, Error Reading File: ...), вам, вероятно, потребуется предоставить терминальной программе полный доступ к диску (в разделе System Preferences > Security & Privacy > Full Disk Access).
@user3439894 user3439894, если вы хотите, чтобы ваши изменения отображались в разделе Spotlight > Privacy, вам нужно будет сделать это вручную. Может есть способ МДМ? Однако цель здесь — отключить поиск в заданном каталоге, поэтому я считаю, что это работает.

Сначала вам нужно изменить настройки разрешений, чтобы добавить что-то на вкладку конфиденциальности Spotlight.sudo chown -R $USER:$GROUP /.Spotlight-V100/ sudo chmod -R 777 /.Spotlight-V100/

а потом

sudo defaults write /.Spotlight-V100/Store-V1/Exclusions Exclusions -array-addдолжно сработать.

И не забудьте установить его обратно после этого.

Когда я это сделал -array-add, папка была добавлена ​​в plist; просто не было никакого эффекта. Другими словами, он отображался с defaults read, но НЕ отображался на панели Pref. Как вы думаете, этот мод разрешений будет иметь значение?
Я не уверен, но значения по умолчанию -rwx-------?
Извините, я неправильно понял, я думал, что это не будет добавлено вообще. Я не уверен, но значения по умолчанию -rwx-------? В этом случае вы можете быть правы, и это не должно иметь никакого значения, если вы изменили -rwxrwxrwx с chmod 777. Но стоит попробовать!?
Я считаю, что Store-V1 используется только в более старых версиях Mac OS X... он пуст в моих системах с 10.9 Mavericks и более поздними версиями. Вы можете попробовать изменить команду, чтобы вместо этого использовать Store-V2.
Для меня это просто говорит, что операция не разрешена. Я на Мохаве.

Вы также можете просто перейти на панель системных настроек для Spotlight. Там вы найдете вкладку конфиденциальности. Просто добавьте папки и файлы, которые вы не хотите отображать в индексе. Вот и все. Они уже упростили это, поэтому вам не нужно использовать командную строку.

И если он добавлен на вкладку конфиденциальности, вы можете увидеть, что все, что вы скрыли из индекса, на тот случай, если вы захотите проиндексировать его позже.

Вопрос был о том, как это сделать программно. Очевидно, это можно сделать через графический интерфейс.
@Ze'ev: Верное замечание ... но в следующий раз, поскольку выполнение этого программно занимает центральное место в вопросе, вам, вероятно, следует включить «программно» в заголовок.
@Ze'ev: детали вашего вопроса не совпадают с вашим заголовком. Вы должны сделать свой заголовок ясным и точным для вопроса