代码之家  ›  专栏  ›  技术社区  ›  Dasmowenator

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

  •  4
  • Dasmowenator  · 技术社区  · 14 年前

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

    3 回复  |  直到 8 年前
        1
  •  23
  •   sepp2k    14 年前
    Dir.glob("a_directory/*/").max_by {|f| File.mtime(f)}
    

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

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

        2
  •  1
  •   Dasmowenator    14 年前

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

    folders = Dir["*"].delete_if{|entry| entry.include? "."}
    newest = folders[0]
    folders.each{|folder| newest = folder if File.mtime(folder) > File.mtime(newest)}
    
        3
  •  1
  •   Brad    12 年前

    将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("**/*") 
    
    推荐文章