如何使用Ruby在目录中找到最近修改过的文件夹?

时间:2010-07-08 19:34:35

标签: ruby file find directory

如何使用Ruby在目录中找到最近修改过的文件夹(NOT A FILE)?

3 个答案:

答案 0 :(得分:23)

Dir.glob("a_directory/*/").max_by {|f| File.mtime(f)}

Dir.glob("a_directory/*/")返回a_directory中的所有目录名称(作为字符串),max_by返回File.mtime返回最大(即最近)目录的名称日期。

编辑:更新的答案以匹配更新的问题

答案 1 :(得分:1)

在当前目录中找到最近修改过的目录:

folders = Dir["*"].delete_if{|entry| entry.include? "."}
newest = folders[0]
folders.each{|folder| newest = folder if File.mtime(folder) > File.mtime(newest)}

答案 2 :(得分:1)

扩展sepp2k的答案,以递归方式添加检查所有子目录:

#!/usr/bin/env ruby
if ARGV.count != 1 then raise RuntimeError, "Usage: newest.rb '/path/to/your dir'" end

Dir.chdir(ARGV[0])
newest_file = Dir.glob("**/").max_by {|f| File.mtime(f)}

if newest_file != nil then
puts newest_file.to_s + " " + File.mtime(newest_file).to_s
else
puts "No subdirectories"
end

如果你想要所有文件而不仅仅是目录,请使用它:

Dir.glob("**/*")