0 votos

Usando 'kMDItemContentModificationDate' en 'do Shell script'

Quiero encontrar archivos modificados en una fecha específica. No es importante la hora del día en que fueron modificados. Probé lo siguiente y obtuve una lista vacía (sin error):

set theFolder to (choose folder)
set folderPOSIX to quoted form of POSIX path of theFolder
set modList to paragraphs of (do shell script "mdfind -onlyin " & folderPOSIX & " 'kMDItemContentModificationDate = 2015-01-15 00:00:00 -0400'")

Si lo entiendo bien, estoy pidiendo los archivos de una carpeta (directorio) específica que fueron modificados el 15 de enero de 2015. Si lo he hecho bien (aparentemente no), debería encontrar al menos un archivo que se modificó en esa fecha, porque puedo ver en la ventana de la carpeta que elegí que hay un archivo modificado el 15 de enero.

Además, no estoy seguro de lo que el -0400 parte es para. ¿Hay alguna forma de obtener los archivos del 15 de enero, independientemente de la hora en que se modificaron?

1voto

Zoltán Puntos 113

Se ha llegado a esta solución con la ayuda de script que funciona bien:

set downloadPath to path to downloads folder from user domain as string
set posixPath to quoted form of POSIX path of downloadPath

--Date to search for:
set dateStart to text returned of (display dialog "Enter search date in form 'MM/DD/YYYY'" default answer "02/03/2015")
--date "Tuesday, February 3, 2015 12:00:00 AM"
set dateStart to date dateStart
--End date (Midnight on next day)
set dateEnd to (dateStart + 24 * 60 * 60 * 1)
--date "Wednesday, February 4, 2015 12:00:00 AM"

--Begin search to now in days (rounded)
set startRound to round ((current date) - dateStart) / 86400
--End search to now in days (rounded)
set endRound to round ((current date) - dateEnd) / 86400
--Search Item
set SearchItem to "."

set theFiles to (do shell script "mdfind -onlyin " & posixPath & " 'kMDItemDisplayName == \"*" & SearchItem & "*\"&& kMDItemContentModificationDate >= $time.today(-" & startRound & ") && kMDItemContentModificationDate <= $time.today(-" & endRound & ")'")

0voto

SPRBRN Puntos 1008

El siguiente código hace lo que quieres. Lo encontré aquí,

http://macscripter.net/viewtopic.php?id=32855

Puede que quieras ajustar la consulta para filtrar más cosas, pero funcionó correctamente cuando lo probé rápidamente...

set parentfolder to path to downloads folder from user domain as string
set ppath to quoted form of POSIX path of parentfolder

# date for search to begin
set Bgn to "1-Dec-14"

# time from begin search to now in days (rounded)
set ABgn to round ((current date) - (date Bgn)) / 86400

# date for search to end
set dNe to "2-dec-14"

# time from end search to now in days (rounded)
set AdNe to round ((current date) - (date dNe)) / 86400

# Search Item
#set SearchItm to "With These Words in it's Name"
set SearchItm to "."

set theFiles to (do shell script "mdfind -onlyin " & ppath & " 'kMDItemDisplayName == \"*" & SearchItm & "*\"&& kMDItemContentModificationDate >= $time.today(-" & ABgn & ") && kMDItemContentModificationDate <= $time.today(-" & AdNe & ")'")

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