El ejemplo anterior muestra una solución utilizando el Finder. Debajo del capó esto es usar la biblioteca de archivos de metadatos. Se puede acceder a ella a través de la línea de comandos mediante las utilidades "md*" como mdfind
, mdls
etc. Si vas a ejecutar este comando con frecuencia, tal vez quieras tenerlo disponible para pegarlo fácilmente en una terminal en lugar de apuntar y hacer clic en el Finder y esta sería una forma expedita de devolverlos.
mdfind 'kMDItemContentModificationDate >= $time.now(-300)'
le mostrará todos los archivos que fueron modificados en los últimos 5 minutos (300 segundos) en todo el sistema de archivos.
Si sabes dónde el programa va a manejar los archivos puedes limitar los resultados usando el -onlyin
por ejemplo, para encontrar archivos en la carpeta del Escritorio: mdfind -onlyin ~/Desktop 'kMDItemContentModificationDate >= $time.now(-300)'
No mencionas mucho sobre el programa. Puedes usar mdls
en el archivo para obtener un listado de todos los atributos por los que se puede consultar:
$ mdls SampleDoc.pages
_kMDItemOwnerUserID = 501
kMDItemAuthors = (
""
)
kMDItemComment = ""
kMDItemContentCreationDate = 2011-11-17 02:01:06 +0000
kMDItemContentModificationDate = 2011-11-17 02:01:06 +0000
kMDItemContentType = "com.apple.iwork.pages.sffpages"
kMDItemContentTypeTree = (
"com.apple.iwork.pages.sffpages",
"public.zip-archive",
"com.pkware.zip-archive",
"public.data",
"public.item",
"public.archive",
"public.composite-content",
"public.content"
)
kMDItemDateAdded = 2015-11-23 05:13:23 +0000
kMDItemDisplayName = "SampleDoc.pages"
kMDItemFonts = (
"Helvetica-Bold",
"Helvetica-Oblique",
LucidaGrande
)
kMDItemFSContentChangeDate = 2011-11-17 02:01:06 +0000
kMDItemFSCreationDate = 2011-11-17 02:01:06 +0000
kMDItemFSCreatorCode = ""
kMDItemFSFinderFlags = 64
kMDItemFSHasCustomIcon = (null)
kMDItemFSInvisible = 0
kMDItemFSIsExtensionHidden = 0
kMDItemFSIsStationery = (null)
kMDItemFSLabel = 0
kMDItemFSName = "SampleDoc.pages"
kMDItemFSNodeCount = (null)
kMDItemFSOwnerGroupID = 20
kMDItemFSOwnerUserID = 501
kMDItemFSSize = 823736
kMDItemFSTypeCode = ""
kMDItemKeywords = (
""
)
kMDItemKind = "Pages Publication"
kMDItemLogicalSize = 823736
kMDItemPhysicalSize = 827392
kMDItemTitle = ""
Así que tal vez podrías filtrar en el MDItemContentType
tipo de atributo. O si se trata de un programa que controlas, podrías establecer un atributo extendido explícitamente y añadirlo a los criterios de búsqueda para asegurarte de que sólo recibes los archivos de tu programa.
Finalmente otra opción que es útil es la -live
bandera. Se mantendrá conectado y le dará un recuento del número de archivos que cumplen los criterios.
$ mdfind -onlyin ~/Desktop -live 'kMDItemContentModificationDate >= $time.now'
[Type ctrl-C to exit]
Query update: 1 matches
Query update: 2 matches
Esto puede ser útil cuando todo lo que se necesita saber es que el proceso tocó el sistema de archivos. Si tu consulta es lo suficientemente estrecha, sabes que sólo cambiará en función de cuándo se toquen esos archivos específicos y entonces podrás hacer lo que necesites hacer en función del hecho de que haya ocurrido.