¿Cómo agregar programáticamente una carpeta a Spotlight "no indexar"?

¿Hay alguna forma de agregar mediante programación una carpeta a la pestaña "Privacidad" de Spotlight? ¿Ya sea a través de Terminal o Applescript?

A menudo quiero hacer clic en un elemento en los resultados de Spotlight en Finder y que la carpeta de ese elemento ya no esté indexada.

Descubrí que si tú

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

puede ver una matriz con todos los elementos excluidos.

Pero si intentas

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

NO se agrega a la pestaña Privacidad en el Panel de preferencias de Spotlight, ni se desindexa.

Respuestas (5)

De acuerdo con una respuesta aquí , una carpeta puede excluirse de la indexación de Spotlight (logrando el mismo efecto que agregarla a la pestaña Privacidad, aunque la carpeta en realidad no aparecerá allí) ya sea

  • agregando .noindexal final del nombre de la carpeta, o
  • creando un archivo vacío .metadata_never_indexdentro de la carpeta (por ejemplo, con touch folder/.metadata_never_index)

Deberá reiniciar Finder después de agregar .metadata_never_index, ya sea killall Finderdesde Terminal o cerrar sesión en el menú Apple y luego volver a iniciar sesión. Este método no funciona en Mojave y versiones posteriores.

@ankii Ha agregado "Este método no funciona en Mojave y versiones posteriores". ¿Eso se aplica a toda la respuesta, o solo al párrafo final?
Solo el método .meta_never_index. Vea alguna discusión aquí: apple.stackexchange.com/questions/375396/… Dudo de High Sierra, pero Mojave seguramente ignora lo mismo. Si desea editarlo, coloque un espacio antes de You will need... y solucionará la ambigüedad de a qué método se aplica.
Gracias. Esperemos que estos comentarios lo documenten lo suficientemente bien.
Si .metadata_never_indexno funciona en Mojave, ¿cómo podemos deshabilitar la indexación en un volumen completo? (no solo un solo directorio)
@ÓscarLópez Creo que merece una pregunta completamente nueva: esta pregunta es sobre carpetas, y supongo que cambiar esto en el nivel de volumen necesitaría soluciones bastante diferentes.
@Ashley Pregunté aquí porque para un volumen montado, solía ser .metadata_never_indexsuficiente crear el en la raíz, se comporta como una carpeta. ya no se que hacer :-/
@ÓscarLópez Perdón por la demora - Me olvidé de esto. Sugeriría hacer una nueva pregunta, con detalles de su sistema, lo que ha probado, lo que está viendo y lo que esperaba en su lugar. Luego ponga otro comentario aquí con un enlace e intentaré ayudar (aunque no puedo prometer nada).

Tienes que detener e iniciar el launchdservicio llamado com.apple.metadata.mds. Así que después:

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

hacer:

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

el VolumeConfiguration.plistse ha movido

Ahora reside en /System/Volumes/Data/.Spotlight-V100/VolumeConfiguration.plist.

Puedes editarlo fácilmente usando/uar/libexec/PlistBuddy

Leer

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

Escribiendo

El cero indica el elemento en la matriz o en este caso el comienzo de la matriz

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

Borrando

El cero indica el primer elemento de la matriz.

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

Reiniciar el demonio

La solución más fácil para que el cambio surta efecto es reiniciar, pero también puede indicar Launchdque reinicie mdworkers

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

mdutil

Sin embargo, si decide que desea deshabilitar la indexación de Spotlight en todo el volumen, por ejemplo, si la máquina es una máquina de compilación sin encabezado, puede usar mdutil.

mdutil -i off /
Si bien los comandos que publicó hacen lo indicado, no cambian el estado actual de la indexación de Spotlight , ni las entradas agregadas se muestran en Preferencias del sistema > Spotlight > Privacidad . Entonces, a menos que tenga una manera de hacer que los cambios entren en vigencia, entonces no estoy seguro del valor de esta respuesta.
Deberá reiniciar, por supuesto, o reiniciar el daemon
Si tiene un error al ejecutar estos comandos (p. ej., Error Reading File: ...), probablemente necesite otorgar a su programa de terminal acceso completo al disco (en System Preferences > Security & Privacy > Full Disk Access).
@user3439894 si desea que sus cambios aparezcan en Spotlight > Privacidad, deberá hacerlo manualmente. ¿Quizás hay una forma de MDM? Sin embargo, el objetivo aquí es deshabilitar la búsqueda de un directorio determinado, por lo que creo que esto funciona.

Primero debe cambiar la configuración de permisos para agregar algo a la pestaña de privacidad de Spotlightsudo chown -R $USER:$GROUP /.Spotlight-V100/ sudo chmod -R 777 /.Spotlight-V100/

y entonces

sudo defaults write /.Spotlight-V100/Store-V1/Exclusions Exclusions -array-addDeberia trabajar.

Y no te olvides de volver a configurarlo después.

Cuando lo hice, -array-addla carpeta se agregó al plist; simplemente no tuvo ningún efecto. En otras palabras, apareció con defaults read, pero NO apareció en el Panel de preferencias. ¿Crees que este mod de permisos marcaría la diferencia?
No estoy tan seguro, pero los valores predeterminados son -rwx-------?
Lo siento, no entendí bien, pensé que no se agregaría en absoluto. No estoy tan seguro, pero los valores predeterminados son -rwx-------? En este caso, puede tener razón y no debería hacer ninguna diferencia si lo cambia -rwxrwxrwx con chmod 777. ¿¡Pero vale la pena intentarlo!?
Creo que Store-V1 solo se usa en versiones anteriores de Mac OS X... está vacío en mis sistemas con 10.9 Mavericks y posteriores. Puede intentar modificar el comando para usar Store-V2 en su lugar.
Para mí solo dice operación no permitida. Estoy en mojave.

También puede ir al panel de preferencias del sistema para Spotlight. Allí encontrarás una pestaña de privacidad. Simplemente agregue las carpetas y los archivos que no desea que aparezcan en el índice. Eso es. Ya lo han hecho fácil para que no tenga que usar la línea de comando.

Y si se agrega a la pestaña de privacidad, puede ver todo lo que ha ocultado del índice en caso de que desee indexarlo más tarde.

La pregunta era sobre cómo hacer esto programáticamente. Obviamente, se puede hacer a través de GUI.
@Ze'ev: Un punto válido... pero la próxima vez, dado que hacerlo de forma programática es tan central para la pregunta, probablemente debería incluir "programáticamente" en el título.
@Ze'ev: los detalles de su pregunta no están de acuerdo con su título. Debe hacer que su título sea claro y preciso para la pregunta.