Interacción 'mdls' y 'mdimport': pregunta de buena práctica

¿Estoy en lo cierto al suponer que, para garantizar una consulta en la terminal como:

mdls -name kMDItemContentCreationDate /var/log/system.log

siempre devuelve la fecha de creación real de dicho archivo (siempre que exista), siempre debo forzar a Spotlight a importar esta información primero a través de:

mdimport -r /var/log/system.log

?

Estoy estrictamente interesado en obtener, de la Terminal, ese dato específico.

Esta parece ser la conclusión basada en otra publicación de SOV, especialmente porque la indexación de Spotlight puede ignorar algunas carpetas.

Nunca he visto que mdls no recupere algo tan básico como la fecha de creación. ¿Tiene una situación reproducible en la que su indexación se interrumpe de forma continua? Tal vez arreglar Spotlight con mddiagnosesería más fácil que forzar una importación para cada consulta, pero supongo que si hace la consulta rara vez, podría no ser un gran impacto en el rendimiento.
Oh no, no me topé con un caso así. Todo lo que estoy tratando de hacer es "a prueba de balas" mi enfoque... "haciendo lo correcto". Estoy escribiendo algunos scripts que implementarán un producto en un número no trivial de sistemas y confío en esta información (sobrescriba una versión anterior del archivo con una más nueva). Esto debería suceder exactamente para dos archivos, cuando se inicia una aplicación... por lo general, una o dos veces al día. Gracias.

Respuestas (1)

Lo usaría staten lugar de mdlsen un sistema que ejecuta el kernel de 64 bits.

stat -f "%B" file

devolverá la fecha de creación o la hora de nacimiento en segundos desde la época (Unix/Epoch time). Se puede producir una salida legible por humanos con

stat -f "%SB" file

También puede formatear la salida de este comando agregando la opción -t (ver man 3 strftime).

En un sistema que ejecuta el kernel de 32 bits, debe usar GetFileInfo.

GetFileInfo -d file

La salida de GetFileInfose puede convertir a tiempo de Época ejecutando la salida a través del datecomando.

cdate=$(GetFileInfo -d file)
date -j -f "%m/%d/%Y %H:%M:%S" "$cdate" +%s