我需要获取服务器上一组文件的修改时间。我知道如何在本地计算机上获取此文件,但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