Uso de '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 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 manera de obtener los archivos para el 15 de enero, independientemente de la hora del día en que se modificaron?


Creo que -400 es el desplazamiento de GMT (es decir, la zona horaria) ya que en un momento dado, no es la misma fecha en todas partes. Por lo general, desearía que este sea el mismo desplazamiento GMT que se usa en su Mac.
samh

Gracias por eso, creo que tienes toda la razón. Mientras tanto, al editar la zona horaria de mi perfil, encontré que EST está listado como '-0400'
AppleScripter

Gracias, AppleScript no es mi fuerte, pero creo que su problema es que está buscando tiempos cuya fecha y hora de modificación sean exactamente el 15 de enero de 2015 a medianoche. Si no hay una comparación de fecha solo por separado, tendrá que hacer algún tipo de rango (no conozco la sintaxis de Applecript, por lo que puede significar dos comparaciones con un & gt; = y un & lt; o tal vez haya una ENTRE o RANGE tipo de cosas como hay con SQL).
samh

Respuestas:


1

Llegó con 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 & ")'")

0

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

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

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 & ")'")

No estoy seguro de por qué esto no funciona en mi computadora. Aparece el mensaje de error: error "Fecha y hora no válidas fecha 1-dic-14 de« script »." número -30720. Tengo mis preferencias de fecha y hora con este formato: Mes Día Año, pero incluso si cambio el formato a Día Mes Año, aún aparece el mismo mensaje de error. Estoy usando Snow Leopard (10.6.8)
AppleScripter

Extraño, estoy usando SL también. Solo puedo sugerir probar diferentes formatos para encontrar uno que funcione ...
Vic
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.