Ruby “Dir.entries”中的排序顺序`

Ruby “Dir.entries”中的排序顺序`,ruby,Ruby,是否有固定/默认排序顺序,Dir.entries返回结果?根据经验,我知道前两个条目是“和”。“我认为没有默认的排序顺序,但您可以使用目录条目('some_path_to_Dir')。按ASC方式排序。根据Ruby语言文档,不保证列出的文件的任何特定顺序,因此,如果您需要一些命令,最好自己明确地执行 例如,如果需要按文件修改时间(从最早到最新)排序,可以执行以下操作: Dir.entries('.').sort_by { |x| File.mtime(x) } 扩展@maerics的答案,下面

是否有固定/默认排序顺序,
Dir.entries
返回结果?根据经验,我知道前两个条目是
”。“

我认为没有默认的排序顺序,但您可以使用
目录条目('some_path_to_Dir')。按ASC方式排序。

根据Ruby语言文档,不保证列出的文件的任何特定顺序,因此,如果您需要一些命令,最好自己明确地执行

例如,如果需要按文件修改时间(从最早到最新)排序,可以执行以下操作:

Dir.entries('.').sort_by { |x| File.mtime(x) }

扩展@maerics的答案,下面忽略了
&&,基于正则表达式的过滤器,并根据需要选择最新的文件

    Dir.chdir(in_dir)
    target_file   =  Dir.entries(in_dir).select(|x| 
                     x != '.' && 
                     x != '..' && 
                     x =~ /\somefile.txt\z/).sort_by{|f|File.mtime(f)}.last(1)
   puts "here i am #{target_file}"

对于其他可能带着同样疑问来到这里的人。仅选择与正则表达式匹配的文件并仍然能够按所需方式对其进行排序的一种方法是:

files_sorted_by_date=Dir[“your regex”]。sorted_by{x | File.birthdime(x)}。reverse

files_sorted_by_date=Dir[“your regex”]。sorted_by{x | File.birthdime(x)}

取决于您希望文件如何分类


我无法使用Dir.entries方法执行同样的操作。。谢谢我问这个问题的原因是(在我工作的系统中)已经有一些代码假定Dir.entries()将以特定的顺序(从上次修改的日期开始)返回数据。因此,我不确定是否应该坚持使用它或更改它以确保顺序。或者
.sort_by{a | File.stat(a).mtime}
跳过一些
stat
调用。或者
.sort_by{a | File.mtime(a)}
跳过一些
File::stat。