Ottenere il percorso del file dell'ultimo file aggiunto in una cartella - Mac OS 10.9

1

Come appreso dai siti di stack di google e sorella, questa è la soluzione di lavoro che ho trovato per ottenere il percorso dell'ultimo file aggiunto in una cartella. Ma questo non sta dando il risultato accurato. Sto usando Mavericks (OS 10.9)

set myFolder to "/Users/lawsome/folder"
tell application "Finder" to set latestFile to the last item of (sort files of (POSIX file myFolder as alias) by creation date) as alias
            set latestpath to POSIX path of latestFile
set latestpath to POSIX path of latestFile

Infine, la risposta di Jose Alban in qui @ askdiff fornisce una lista ordinata accurata usando il comando mdls terminal. Come posso ottenere il percorso del file dell'ultima voce in questo elenco.

O qualsiasi modo per ottenere il percorso desiderato.

    
posta lawsome 13.08.2018 - 07:17
fonte

1 risposta

2

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
    
risposta data 13.08.2018 - 11:06
fonte

Leggi altre domande sui tag