我发现这篇关于使用bash的帖子
How to recursively find the latest modified file in a directory?(使用bash)
但是我需要在ruby中写这个,我有一个带有名为" active"的网络文件夹的场景,有许多子目录,每个子目录都有子目录,子节点有子目录等等上。我需要将lvl1目录中包含的最新修改文件的日期返回到其许多子目录中的某个位置。
---------------------------
active | lvl1 | lvl2 | lvl3
| | | lvl3
| | lvl2 |
| | lvl2 |
| | lvl2 |
| lvl1 | |
---------------------------
使用我目前的内容进行编辑,这对于返回文件名非常有用,但是我坚持在每个文件出现时存储File.mtime()的位置,我需要确定哪个lvl1文件夹需要存档:
def walk(start)
Dir.foreach(start) do |x|
path = File.join(start, x)
if x == "." or x == ".."
next
elsif File.directory?(path)
walk(path)
else
puts x
end
end
end
path = 'folder\\path'
walk(path)
答案 0 :(得分:3)
您可以使用Dir#glob
方法查找给定目录及其子目录中所有文件的列表,然后选择上次修改时间值最高的文件,该文件可以使用File#mtime
获取方法
Dir.glob("active/lvl1/**/*").max_by {|i| File.mtime(i)}