Ruby - 从目录中获取第二个最新文件?

Whe*_*rew 2 ruby getfiles

我有这段脚本来获取目录中的最新文件

dir=Dir.glob("./logs/*").max_by {|f| File.mtime(f)}
Run Code Online (Sandbox Code Playgroud)

我还想从目录中获取第二个最新文件.我能写些什么才能实现这个目标?

Aru*_*hit 5

你可以做如下使用的Ruby 2.2.0,其中增加了一个可选参数的方法Enumerable#max_by,Enumerable#min_byEnumerable#min

Dir.glob("./logs/*").max_by(2) {|f| File.mtime(f)}
# gives first 2 maximun.
# If you want the second most recent
Dir.glob("./logs/*").max_by(2) {|f| File.mtime(f)}.last
Run Code Online (Sandbox Code Playgroud)

max_by(n){| obj | block}→obj

如果n给出参数,则最少n个元素作为数组返回.