我需要獲取服務器上一組文件的修改時間。我知道如何在本地計算機上獲取此文件,但File.mtime
無法通過FTP工作。我將如何將此代碼轉換爲在服務器上工作?獲取FTP服務器上文件的修改時間
files_sorted_by_time = Dir['*'].select { |f|
((Time.now - File.mtime(f)).to_i/604800) < 7
}
我需要獲取服務器上一組文件的修改時間。我知道如何在本地計算機上獲取此文件,但File.mtime
無法通過FTP工作。我將如何將此代碼轉換爲在服務器上工作?獲取FTP服務器上文件的修改時間
files_sorted_by_time = Dir['*'].select { |f|
((Time.now - File.mtime(f)).to_i/604800) < 7
}
你想要Net::FTP#mtime。從文檔
例子:
Net::FTP.open('ftp.netlab.co.jp') do |ftp|
ftp.login
files = ftp.chdir('pub/lang/ruby/contrib')
files = ftp.list('n*')
ftp.getbinaryfile('nif.rb-0.91.gz', 'nif.gz', 1024)
ftp.mtime('file.pdf')
end
您可以使用#mtime
與#nlst
通過遠程文件列表進行過濾。
Net::FTP.open('ftp.netlab.co.jp') do |ftp|
ftp.login
ftp.nlst do |file|
if ftp.mtime(file) # ...
end
end
'File.mtime'對*文件*有效。你打算如何通過FTP使用它? – tadman
我正在製作一個腳本,用於下載上週已上傳的flv文件,將它們轉換爲mp4並重新上傳。 – Chase
當您下載文件時,它將在您下載它的那一刻創建。某些FTP客戶端經歷了從服務器獲取修改時間並將其應用於下載文件的麻煩,但如果您要在Ruby中進行下載,則必須有意識地執行此操作。 FTP的日期和時間格式幾乎爲零*標準,編寫一個全功能的FTP客戶端確實令人沮喪和困難。如果你可以使用SCP,你的生活將會變得無比美好。 – tadman