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

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

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

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

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

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

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

扩展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("**/*")