【问题标题】:Sort List of Files Paths by Date Modified in Ruby按 Ruby 中修改日期对文件路径列表进行排序
【发布时间】:2011-12-25 16:25:12
【问题描述】:

我正在尝试按日期对文件列表进行排序。我目前有一个文件路径的字符串数组,我需要按修改日期对它们进行排序。我尝试了以下方法,但运气不佳。我也不太明白 sort_by 方法是如何工作的。

@files.sort_by {|filename| File.mtime(filename) }

编辑

我也尝试将它们转换为日期并对其进行排序。

@files.sort_by {|filename| DateTime.parse(File.mtime(filename).to_s) }

谢谢!

【问题讨论】:

    标签: ruby io


    【解决方案1】:

    您的第一个示例应该可以正常工作,但它只是返回已排序的文件数组。如果要更改变量,请尝试 mutator sort_by!

    @files.sort_by! {|filename| File.mtime(filename) }
    

    【讨论】:

    • 谢谢!这对我有帮助!
    【解决方案2】:

    您所拥有的线路正在按预期工作。我创建了四个文件,这是ls -lt 的输出,它按修改时间对文件进行排序:

    $ ls -t
    2  3  4  1
    

    您的示例输出:

    @files = Dir.entries(Dir.pwd)
    @files.sort_by { |file| File.mtime(file) }
    => ["2", ".", "3", "4", "1", ".."]
    

    注意:按照惯例,任何集合中的方法都不会改变集合本身。您需要调用sort_by! 才能将排序集应用于原始集。

    【讨论】:

      猜你喜欢
      • 2011-09-15
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多