4 votos

¿Cómo obtienen mdfind y mdls los metadatos que tiene un archivo y dónde se almacenan?

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.

Se podría suponer que el "almacén central de metadatos" hace referencia store.db en .Spotlight-V100 (como se indica en este respuesta ) pero mdls que supongo que utiliza 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 ningún retraso en la visualización de la salida de mdls , lo que indica que el comando no utiliza la base de datos de Spotlight.

sudo rm -rf /System/Volumes/Data/.Spotlight-V100 ~/Library/Metadata/CoreSpotlight/ 
mdls ~/Downloads/MacVim.dmg

Utilizar manualmente Spotlight con CommandSpace por otro lado lanza un montón de mdworker_shared procesa y recrea la .Spotlight-V100 directorio.

Tampoco veo cómo mdls y mdfind podría estar utilizando atributos extendidos, como se indica en este respuesta ya que al invocar xattr -l ~/Downloads/MacVim.dmg no produce ninguna salida mientras que mdls ~/Downloads/MacVim.dmg muestra varios kMD* atributos.

7voto

Jose Chavez Puntos 645

mdfind consulta la base de datos de Spotlight para proporcionar resultados de búsqueda más rápidamente que el escaneo de todo el sistema de archivos para cada consulta.

mdls por otro lado, no depende de la base de datos de Spotlight, ya que no necesita escanear el sistema de archivos - usted está especificando el archivo que desea examinar directamente. Sin embargo, depende de la API de Spotlight para proporcionar los datos solicitados.

Es decir mdls no es un programa que contenga código que intente "parsear" todo tipo de archivos o recoger información de muchos lugares. Tampoco lo busca directamente en el store.db archivo.

Cuando se solicitan los metadatos de un archivo específico a través de la API de Spotlight, la información se recoge de varios lugares y se da al programa ( mdls en este caso) en un formato uniforme. Estas fuentes son, por ejemplo:

  • los metadatos del sistema de archivos
  • los atributos extendidos almacenados en el sistema de archivos
  • información de los paquetes de aplicaciones y lugares similares
  • información recopilada por el plugin de importación de Spotlight para el tipo de archivo específico

Tenga en cuenta que algunos plugins del importador son externos, es decir, pequeños programas almacenados de forma independiente al propio Spotlight. Por ejemplo, en /System/Library/Spotlight normalmente encontrará importadores para cosas como archivos de audio, archivos de vídeo, archivos comprimidos, etc. Del mismo modo, 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 plugins son internos, es decir, son autónomos dentro de Spotlight y no requieren programas externos. Tu ejemplo en la pregunta era para un .dmg y el importador de los mismos es interno.

Puede ejecutar el importador para un archivo específico para ver exactamente qué atributos habría dado al índice Spotlight - sin cambiar realmente el índice Spotlight. Ejecute un comando como este:

mdimport -t -d2 ~/Downloads/MacVim.dmg

Tenga en cuenta que -d2 significa que se ven todos los atributos de metadatos importados, excepto kMDItemTextContent que en el caso de un documento suele ser muy grande y no es preferible verlo en la salida de un Terminal. También puede ver ese atributo utilizando la función -d3 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 datos encontrados en el propio sistema de archivos - incluso podría dar atributos encontrados consultando servidores en la nube a través de la red (por ejemplo, cuando se tiene un archivo almacenado en iCloud).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X