Ознакомьтесь с предыдущим ответом, Извлечение последнего измененного файла в каталоге по FTP с использованием bash-скрипта с curl .
В частности, эта строка Bash,
curl --user <<USERNAME>>:<<PASSWORD>> ftp://<<SERVERURL>> 2>/dev/null | grep "Stock_Summary" | awk -F\ '{print $9}' | sort -n -t- -k3,4 -k1,2 -k2,2 | tail -1
вернет имя последнего измененного файла в каталоге, который соответствует заданному шаблону grep.Затем вы можете взять результат этого вызова и ввести имя файла (с дополнительными идентификаторами) в существующий AppleScript.
set theFileName to do shell script "<<SHELL LINE ABOVE>>"
Возможно, вам придется поиграться с шаблоном файла, чтобы grep получил что-то, чтобудет работать для вас.
Затем вы вернетесь к существующему коду и сделаете что-то вроде:
--user " & $usr & ":" & $pw & " -o " & theFileName
Примечание: удалите и заполните все между, включая << и>>.
В AppleScript это может выглядеть так:
on GetFileNameToPull(server, username, password, filePattern)
set theScriptToRun to "curl --user " & username & ":" & password & " ftp://" & server & " 2>/dev/null | grep '" & filePattern & "' | awk -F\\ '{print $9}' | sort -n -t- -k3,4 -k1,2 -k2,2 | tail -1"
set theFileName to do shell script theScriptToRun
return theFileName
end GetFileNameToPull
on GetFileNameFromFTPServer(server, username, password, remoteFileName, localFileName)
set theScriptToRun to "curl --silent --show-error --user " & username & ":" & password & " ftp://" & server & "/" & remoteFileName & " -o " & localFileName
do shell script theScriptToRun
end GetFileNameFromFTPServer
on run
set username to "USERNAME"
set thePassword to "PASSWORD"
set server to "SERVERNAME"
set pathToDownload to "/path/to/download/to"
set theRemoteFileName to GetFileNameToPull(server, username, thePassword, "Stock_Summary")
set theLocalFileName to pathToDownload & "/" & theRemoteFileName
GetFileNameFromFTPServer(server, username, thePassword, theRemoteFileName, theLocalFileName)
end run