La página man de mdfind
dice lo siguiente:
El comando mdfind consulta el almacén central de metadatos y devuelve una lista de archivos que coinciden con la consulta de metadatos dada. La consulta puede ser una cadena o una expresión de consulta.
Uno supondría que el "almacén central de metadatos" hace referencia store.db
a .Spotlight-V100
(como se indica en esta respuesta ), pero mdls
, que supongo que usa el mismo "almacén central de metadatos", parece funcionar bien sin ninguno de los archivos de Spotlight presentes. Probé el siguiente comando en Catalina (10.15.7) y no hubo demora en mostrar el resultado de mdls
, lo que indica que el comando no utiliza Spotlight DB.
sudo rm -rf /System/Volumes/Data/.Spotlight-V100 ~/Library/Metadata/CoreSpotlight/
mdls ~/Downloads/MacVim.dmg
El uso manual de Spotlight, CommandSpacepor otro lado, inicia muchos mdworker_shared
procesos y vuelve a crear el .Spotlight-V100
directorio.
Tampoco veo cómo mdls
y mdfind
podría estar usando atributos extendidos, como se indica en esta respuesta , ya que la invocación xattr -l ~/Downloads/MacVim.dmg
no produce ningún resultado mientras mdls ~/Downloads/MacVim.dmg
muestra varios kMD*
atributos.
mdfind
consulta la base de datos de Spotlight para proporcionar resultados de búsqueda más rápido que escanear todo el sistema de archivos para cada consulta.
mdls
por otro lado, no se basa en la base de datos de Spotlight, ya que no necesita escanear el sistema de archivos: está especificando el archivo que desea examinar directamente. Sin embargo, se basa en la API de Spotlight para proporcionar los datos solicitados.
Es decir, mdls
no es un programa que contiene código que intenta "analizar" todo tipo de tipos de archivos o recopilar información de muchos lugares. Tampoco lo busca directamente en el store.db
archivo.
Cuando solicita los metadatos para un archivo específico a través de la API de Spotlight, la información se recopila de varios lugares y se entrega al programa ( mdls
en este caso) en un formato uniforme. Estas fuentes son por ejemplo:
Tenga en cuenta que algunos complementos de importación son externos, es decir, pequeños programas almacenados por separado del propio Spotlight. Por ejemplo, /System/Library/Spotlight
normalmente encontrará importadores para cosas como archivos de audio, archivos de video, archivos comprimidos, etc. De manera similar, las aplicaciones pueden venir con sus propios importadores de Spotlight, almacenados en ubicaciones como, por ejemplo:
/Applications/Microsoft Outlook.app/Contents/Library/Spotlight/Microsoft Outlook Spotlight Importer.mdimporter
En este caso para importar datos de Outlook a Spotlight.
Otros complementos son internos, es decir, están incluidos en Spotlight y no requieren programas externos. Su ejemplo en la pregunta fue para un .dmg
archivo, y el importador para esos es interno.
Puede ejecutar el importador para un archivo específico para ver exactamente qué atributos le habría dado al índice de Spotlight, sin cambiar realmente el índice de Spotlight. Ejecute un comando como este:
mdimport -t -d2 ~/Downloads/MacVim.dmg
Tenga en cuenta que eso -d2
significa que verá todos los atributos de metadatos importados, excepto kMDItemTextContent
los que, en el caso de un documento, suelen ser muy grandes y no es preferible verlos en una salida de Terminal. También puede ver ese atributo usando el -d3
argumento en su lugar.
Como estos importadores se ejecutan efectivamente como programas de propósito general, las fuentes de datos para los propios importadores pueden ser casi cualquier cosa. Es decir, no se limita a devolver los datos que se encuentran en el propio sistema de archivos; incluso podría proporcionar atributos encontrados consultando servidores en la nube a través de la red (por ejemplo, cuando tiene un archivo almacenado en iCloud).