Usando 'kMDItemContentModificationDate' en 'do Shell Script'

0

Quiero encontrar archivos modificados en una fecha específica. No es importante a qué hora del día se modificaron. Intenté 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 entiendo esto correctamente, estoy solicitando archivos en una carpeta específica (directorio) que se modificaron el 15 de enero de 2015. Si hice esto correctamente (aparentemente no), debería encontrar al menos un archivo que fue modificado 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 para qué sirve la parte -0400 . ¿Hay alguna forma de obtener los archivos para el 15 de enero, independientemente de la hora del día en que se modificaron?

    
pregunta AppleScripter 05.02.2015 - 13:57

2 respuestas

1

Encontré esta solución con la ayuda del script anterior, 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 & ")'")
    
respondido por el AppleScripter 10.02.2015 - 19:01
0

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

enlace

Es posible que desee ajustar la consulta para filtrar más las 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 & ")'")
    
respondido por el Vic 08.02.2015 - 10:52

Lea otras preguntas en las etiquetas