代码之家  ›  专栏  ›  技术社区  ›  btelles

在Ruby中,有没有任何方法可以通过net::ssh或net::sftp命令修改日期?

  •  3
  • btelles  · 技术社区  · 15 年前

    有没有一种简单的方法可以使用net::sftp修改文件的日期?

    能做到这一点很好:

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

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

    伯恩斯。

    1 回复  |  直到 15 年前
        1
  •  9
  •   mikej heading_to_tahiti    15 年前

    您的示例代码就在这里,您只需要使用 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 (上次访问时间)
    推荐文章