Il codice AppleScript sembra aver ottenuto creation date
anziché date added
. Finder e Eventi di sistema non memorizzano le informazioni di date added
in AppleScript. Se stavi usando Yosemite, avresti potuto farlo con AppleScriptObjC. Ma con Mavericks, l'unica strada che posso pensare è attraverso lo scripting di shell.
tramite script bash:
F=~/folder \
&& [[ -d "$F" ]] \
&& mdls -name kMDItemFSName -name kMDItemDateAdded -raw "$F"/* \
| xargs -0 -I {} echo {} \
| paste -sd" \n" - - \
| sort \
| tail -1 \
| cut -f4- -d" " \
| printf '%s\n' "$F/$(cat)"
Da un AppleScript:
AppleScript ha la capacità di eseguire comandi di shell usando do shell script
. Puoi eseguire l'intero comando sopra utilizzando do shell script
, che probabilmente è ciò che farebbe la maggior parte delle persone. Ma, solo a scopo dimostrativo, ho intenzione di mixarlo anche con un po 'di AppleScripting.
property text item delimiters : space
set myFolder to "/Users/lawsome/folder" -- Folder to be evaluated
-- Assemble shell command
set sh to the contents of {¬
"[[ -d", quoted form of myFolder, "]]", "&&", ¬
"mdls", "-name kMDItemFSName", "-name kMDItemDateAdded", ¬
"-raw", [quoted form of myFolder, "/*"], ¬
"|", "xargs", "-0 -I {} echo {}", ¬
"|", "paste", "-sd' \n' - -", ¬
"|", "sort"} as text
do shell script sh -- run the bash command
set latestFileAddedToFolder to the last paragraph of the result
--> e.g. 2018-08-13 08:02:52 +0000 Some File Name.txt
-- Split text up into date components and filename text
set [{yyyy, m, dd, HH, MM, SS, "+", timezone}, filename] to ¬
[words 1 thru 8, text 27 thru -1] of latestFileAddedToFolder
-- Construct AppleScript date object from date components
tell the (current date) to set ¬
[dateAdded, year, its month, day, time] to ¬
[it, yyyy, m, dd, hours * HH + minutes * MM + SS]
set pathToMostRecentlyAddedFile to myFolder & "/" & filename
return contents of {pathToMostRecentlyAddedFile, ¬
"was added to its containing folder", myFolder, ¬
"on", date string of dateAdded, ¬
"at", time string of dateAdded} as text