如何使用Ruby在目录中找到最近修改过的文件夹(NOT A FILE)?
答案 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("**/*")