3

有没有一种简单的方法可以使用 Net::SFTP 获取文件的修改日期?

能够做到这一点会很好:

Net::SFTP.start('some_server') do |sftp|
  sftp.dir.glob('*').each do |file|
    puts file.mtime
  end
end

但这是不可能的(据我所知)。

伯恩斯。

4

1 回答 1

10

您的示例代码几乎就在那里,您只需要使用file.attributes.mtime您拥有的file.mtime.

另外,我猜问题中的代码只是一个示例,但是为了执行它,您还需要将用户名和密码start传递给并将路径和模式传递给glob. 所以一个工作的例子是:

Net::SFTP.start('some_server', 'mike', :password => 'secret') do |sftp|
  sftp.dir.glob('.', '*').each do |file|
    puts file.attributes.mtime
  end
end

返回的值mtime将是自纪元以来的秒数,因此您可能希望将其传递给Time.at以将其转换为Time对象。

如果您很好奇,以相同方式可用的其他属性是:

  • permissions
  • uid
  • gid
  • size
  • atime(最后访问时间)
于 2010-04-20T20:54:01.013 回答