Wie füge ich programmgesteuert einen Ordner zu Spotlight "nicht indizieren" hinzu?

Gibt es eine Möglichkeit, einen Ordner programmatisch zur Registerkarte "Datenschutz" von Spotlight hinzuzufügen? Entweder über Terminal oder Applescript?

Oft möchte ich auf ein Element in den Spotlight-Ergebnissen im Finder klicken und den Ordner dieses Elements nicht mehr indizieren.

Ich habe das gefunden, wenn Sie

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

Sie können ein Array mit allen ausgeschlossenen Elementen sehen.

Aber wenn du es versuchst

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

es wird NICHT zur Registerkarte „Datenschutz“ im Spotlight-Einstellungsfenster hinzugefügt und auch nicht deindexiert.

Antworten (5)

Laut einer Antwort hier kann ein Ordner auch von der Spotlight-Indizierung ausgeschlossen werden (was den gleichen Effekt erzielt wie das Hinzufügen zur Registerkarte Datenschutz, obwohl der Ordner dort nicht wirklich aufgeführt wird).

  • Hinzufügen .noindexam Ende des Ordnernamens oder
  • Erstellen einer leeren Datei .metadata_never_indexim Ordner (z. B. mit touch folder/.metadata_never_index)

Sie müssen den Finder nach dem Hinzufügen neu starten .metadata_never_index, entweder killall Finderüber das Terminal oder sich vom Apple-Menü abmelden und dann wieder anmelden. Diese Methode funktioniert nicht in Mojave und höher.

@ankii Sie haben "Diese Methode funktioniert nicht in Mojave und höher" hinzugefügt. Gilt das für die gesamte Antwort oder nur für den letzten Absatz?
Nur die Methode .meta_never_index. Sehen Sie hier eine Diskussion: apple.stackexchange.com/questions/375396/… Ich habe Zweifel an High Sierra, aber Mojave ist sich dessen sicherlich nicht bewusst. Wenn Sie es bearbeiten möchten, setzen Sie ein Leerzeichen vor You will need.. und es wird die Mehrdeutigkeit der Methode beheben, auf die es sich bezieht.
Vielen Dank. Hoffentlich dokumentieren diese Kommentare es gut genug.
Wenn das .metadata_never_indexauf Mojave nicht funktioniert, wie können wir dann die Indizierung auf einem ganzen Volume deaktivieren? (nicht nur ein einzelnes Verzeichnis)
@ÓscarLópez Ich denke, das ist eine völlig neue Frage wert - diese Frage bezieht sich auf Ordner, und ich vermute, dass eine Änderung auf Lautstärkeebene ganz andere Lösungen erfordern würde.
@Ashley Ich habe hier gefragt, weil es für ein gemountetes Volume früher der Fall war, dass .metadata_never_indexes ausreichte, nur das im Stammverzeichnis zu erstellen, es verhält sich wie ein Ordner. Ich weiß nicht was ich jetzt machen soll :-/
@ÓscarLópez Entschuldigung für die Verspätung - das habe ich vergessen. Ich würde vorschlagen, eine neue Frage mit Details zu Ihrem System zu stellen, was Sie versucht haben, was Sie sehen und was Sie stattdessen erwartet haben. Dann schreiben Sie hier einen weiteren Kommentar mit einem Link dazu, und ich werde versuchen zu helfen (obwohl ich nichts versprechen kann).

Sie müssen den launchdDienst mit dem Namen stoppen und starten com.apple.metadata.mds. So danach:

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

tun:

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

Der VolumeConfiguration.plistist umgezogen

Es befindet sich jetzt in /System/Volumes/Data/.Spotlight-V100/VolumeConfiguration.plist.

Sie können es einfach mit bearbeiten/uar/libexec/PlistBuddy

Lektüre

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

Schreiben

Die Null gibt das Element im Array oder in diesem Fall den Anfang des Arrays an

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

Löschen

Die Null gibt das erste Element im Array an

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

Starten Sie den Dämon neu

Die einfachste Lösung, um die Änderung wirksam werden zu lassen, ist ein Neustart, aber Sie können auch sagen Launchd, dass die mdworkers neu gestartet werden sollen

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

mdutil

Wenn Sie sich jedoch entscheiden, die Spotlight-Indizierung auf dem gesamten Volume zu deaktivieren, beispielsweise wenn es sich bei der Maschine um eine Headless-Build-Maschine handelt, können Sie einfach mdutil.

mdutil -i off /
Während die von Ihnen geposteten Befehle wie angegeben funktionieren, ändern sie weder den aktuellen Status der Spotlight - Indizierung noch werden die hinzugefügten Einträge in System Preferences > Spotlight > Privacy angezeigt . Wenn Sie also keine Möglichkeit haben, die Änderungen auch in Kraft treten zu lassen, sind Sie sich des Werts dieser Antwort nicht sicher.
Sie müssen natürlich neu starten oder den Daemon neu starten
Wenn beim Ausführen dieser Befehle ein Fehler auftritt (z. B. Error Reading File: ...), müssen Sie Ihrem Terminalprogramm wahrscheinlich vollen Zugriff auf die Festplatte gewähren (unter System Preferences > Security & Privacy > Full Disk Access).
@user3439894 Wenn Sie möchten, dass Ihre Änderungen unter Spotlight > Datenschutz angezeigt werden, müssen Sie dies manuell tun. Vielleicht gibt es einen MDM-Weg? Das Ziel hier ist jedoch, die Suche nach einem bestimmten Verzeichnis zu deaktivieren, also glaube ich, dass dies funktioniert.

Zuerst müssen Sie die Berechtigungseinstellungen ändern, um etwas zum Spotlight-Datenschutz-Tab hinzuzufügensudo chown -R $USER:$GROUP /.Spotlight-V100/ sudo chmod -R 777 /.Spotlight-V100/

und dann

sudo defaults write /.Spotlight-V100/Store-V1/Exclusions Exclusions -array-addsollte arbeiten.

Und vergessen Sie nicht, ihn danach wieder zurückzusetzen.

Als ich das tat, -array-addwurde der Ordner zur plist hinzugefügt; es hatte einfach keine Wirkung. Mit anderen Worten, es wurde mit defaults readangezeigt, aber NICHT im Pref-Panel. Glaubst du, dieser Permission-Mod würde einen Unterschied machen?
Ich bin mir nicht sicher, aber die Standardwerte sind -rwx-------?
Entschuldigung, ich habe es falsch verstanden, ich dachte, es würde überhaupt nicht hinzugefügt. Ich bin mir nicht sicher, aber die Standardwerte sind -rwx-------? In diesem Fall haben Sie vielleicht Recht und es sollte keinen Unterschied machen, ob Sie es mit chmod 777 -rwxrwxrwx geändert haben. Aber einen Versuch ist es wert!?
Ich glaube, Store-V1 wird nur von älteren Versionen von Mac OS X verwendet ... es ist auf meinen Systemen mit 10.9 Mavericks und höher leer. Sie können versuchen, den Befehl so zu ändern, dass stattdessen Store-V2 verwendet wird.
Bei mir steht da nur Betrieb nicht erlaubt. Ich bin auf Mojave.

Sie können auch einfach zum Bereich Systemeinstellungen für Spotlight gehen. Dort finden Sie einen Datenschutz-Tab. Fügen Sie einfach die Ordner und Dateien hinzu, die nicht im Index angezeigt werden sollen. Das ist es. Sie haben es bereits so einfach gemacht, dass Sie nicht die Befehlszeile verwenden müssen.

Und wenn es zur Registerkarte Datenschutz hinzugefügt wird, können Sie sehen, was Sie alles aus dem Index ausgeblendet haben, nur für den Fall, dass Sie es später indizieren möchten.

Die Frage war, wie man das programmatisch macht. Natürlich geht das über die GUI.
@Ze'ev: Ein gültiger Punkt ... aber das nächste Mal, da es programmgesteuert so zentral für die Frage ist, sollten Sie wahrscheinlich "programmgesteuert" in den Titel aufnehmen.
@Ze'ev: Ihre Fragendetails stimmen nicht mit Ihrem Titel überein. Sie müssen Ihren Titel klar und genau auf die Frage abstimmen