Come aggiungere programmaticamente una cartella a Spotlight "non indicizzare"?


17

Esiste un modo per aggiungere a livello di programmazione una cartella alla scheda "Privacy" di Spotlight? Tramite Terminal o Applescript?

Spesso desidero fare clic su un elemento nei risultati di Spotlight nel Finder e fare in modo che la cartella di quell'elemento non sia più indicizzata.

L'ho scoperto se tu

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

puoi vedere un array con tutti gli elementi esclusi.

Ma se ci provi

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

NON viene aggiunto alla scheda Privacy nel pannello Preferenze Spotlight, né viene de-indicizzato.

Risposte:


17

Secondo una risposta qui , una cartella può essere esclusa dall'indicizzazione Spotlight (ottenendo lo stesso effetto dell'aggiunta alla scheda Privacy, anche se la cartella non verrà effettivamente elencata lì) da

  • aggiungendo .noindexalla fine del nome della cartella, o
  • creazione di un file vuoto .metadata_never_indexall'interno della cartella (ad es. con touch folder/.metadata_never_index)

Dovrai riavviare Finder dopo aver aggiunto .metadata_never_index, killall Finderdal Terminale o dal logout dal menu Apple, quindi accedere nuovamente. Questo metodo non funziona in Mojave e versioni successive.


@ankii Hai aggiunto "Questo metodo non funziona in Mojave e versioni successive". Questo vale per l'intera risposta, o solo per l'ultimo paragrafo?
Ashley,

Solo il metodo .meta_never_index. Vedi qualche discussione qui: apple.stackexchange.com/questions/375396/… Sono dubbioso su High Sierra, ma Mojave è sicuramente ignaro della stessa cosa. Se vuoi modificarlo, metti uno spazio prima che ti serva ... e risolverà l'ambiguità di quale metodo si applica.
ankii

Grazie. Spero che questi commenti lo documentino abbastanza bene.
Ashley,

2

Devi interrompere e avviare il launchdservizio chiamato com.apple.metadata.mds. Quindi dopo:

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

fare:

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

0

Per prima cosa devi modificare le impostazioni di autorizzazione per aggiungere qualcosa alla scheda della privacy di Spotlight sudo chown -R $USER:$GROUP /.Spotlight-V100/ sudo chmod -R 777 /.Spotlight-V100/

e poi

sudo defaults write /.Spotlight-V100/Store-V1/Exclusions Exclusions -array-add dovrebbe funzionare.

E non dimenticare di ripristinarlo in seguito.


1
Quando l'ho fatto -array-addla cartella è stata aggiunta al plist; semplicemente non ha avuto alcun effetto. In altre parole, si è presentato con defaults read, ma NON è stato visualizzato nel Pannello Pref. Pensi che questa mod di autorizzazione farebbe la differenza?
Dan

Non ne sono così sicuro, ma i valori predefiniti sono -rwx -------?
bluewoodtree

Mi dispiace di aver frainteso, ho pensato che non sarebbe stato aggiunto affatto. Non ne sono così sicuro, ma i valori predefiniti sono -rwx -------? In questo caso potresti avere ragione e non dovrebbe fare alcuna differenza se hai cambiato -rwxrwxrwx con chmod 777. Ma vale la pena provare !?
bluewoodtree

Credo che Store-V1 sia utilizzato solo dalle versioni precedenti di Mac OS X ... è vuoto sui miei sistemi con 10.9 Mavericks e versioni successive. Potresti provare a modificare il comando per utilizzare Store-V2 invece.
Jim Grisham,

-3

Puoi anche andare al riquadro delle preferenze di sistema per Spotlight. Lì troverai una scheda sulla privacy. Aggiungi solo le cartelle e i file che non vuoi mostrare nell'indice. Questo è tutto. Hanno già reso più semplice, quindi non è necessario utilizzare la riga di comando.

E se viene aggiunto alla scheda della privacy, puoi vedere cosa hai nascosto dall'indice nel caso in cui desideri indicizzarlo in un secondo momento.


1
La domanda era su come farlo a livello di codice. Ovviamente può essere fatto tramite GUI.
Dan

1
@ Ze'ev: un punto valido ... ma la prossima volta, dal momento che farlo a livello di codice è così centrale nella domanda, probabilmente dovresti includere "a livello di codice" nel titolo.
LarsH,

@ Ze'ev: i dettagli della tua domanda non sono d'accordo con il tuo titolo. Devi rendere il tuo titolo chiaro e preciso alla domanda
smci
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.