Utilizzo di 'kMDItemContentModificationDate' in 'do Shell Script'

0

Voglio trovare i file modificati in una data specifica. Non è importante a che ora del giorno sono stati modificati. Ho provato quanto segue e ho ottenuto una lista vuota (nessun errore):

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

Se ho capito bene, sto chiedendo i file in una cartella specifica (directory) che sono stati modificati il 15 gennaio 2015. Se l'ho fatto correttamente (apparentemente no), dovrebbe trovare almeno un file che è stato modificato in quella data, perché posso vedere nella finestra della cartella ho scelto che c'è un file modificato il 15 gennaio.

Inoltre, non so per cosa sia la parte -0400 . C'è un modo in cui posso ottenere i file per il 15 gennaio, indipendentemente dall'ora del giorno in cui sono stati modificati.

    
posta AppleScripter 05.02.2015 - 13:57
fonte

2 risposte

1

È arrivata questa soluzione con l'aiuto dello script sopra che funziona perfettamente:

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 & ")'")
    
risposta data 10.02.2015 - 19:01
fonte
0

Il seguente codice fa quello che vuoi. L'ho trovato qui,

link

Potresti voler regolare la query per filtrare ulteriormente le cose, ma ha funzionato correttamente quando l'ho testata rapidamente ...

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 & ")'")
    
risposta data 08.02.2015 - 10:52
fonte

Leggi altre domande sui tag