如何使用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("**/*")