【发布时间】:2011-03-11 02:50:29
【问题描述】:
如何使用 Ruby 获取目录中最后创建的文件的路径?
【问题讨论】:
-
对于希望在目录中查找最近修改的文件夹的人,请转到此处:stackoverflow.com/questions/3207246/…
如何使用 Ruby 获取目录中最后创建的文件的路径?
【问题讨论】:
我将此方法添加到 railsapp/config/initializers 内的 supermanpatches.rb 文件中,以打开我最新生成的迁移(在 TextMate 中),而无需复制和粘贴文件名或类似内容:
def latestmigration
`mate db/migrate/#{Dir.glob(File.join(Rails.root, 'db', 'migrate', '*.rb')).max { |a,b| File.ctime(a) <=> File.ctime(b)} }`
end
‡:(仅供 ruby/rails 初学者参考,初始化代码无处不在,并且不需要从 rails 内的任何地方都可以访问类到文件名的范围)
注意:对于 windows(或 mac),您可以使用 vim 命令而不是 mate 命令,并且 sublimetext 也可以配置为执行此操作,我认为它称为 subl 命令。 mate & subl 虽然我认为默认情况下不起作用,所以你必须先设置它
【讨论】:
Dir.glob(root_path + ".").map{ |file| [file,File.ctime(file)]}.max.first
【讨论】:
Dir.entries("testdir").reject{|f| f== '.' || f=='..'}.sort_by{|f| File.ctime(f)}.last
【讨论】:
我认为这是相当简短的:
Dir.glob(File.join(path, '*.*')).max { |a,b| File.ctime(a) <=> File.ctime(b) }
【讨论】:
Dir[File.join(path, '*.*')].max_by(&File.method(:ctime))
您可以使用dir类列出所有文件并检查文件对象的ctime或atime(ctime是上次更改文件的时间,atime是上次访问文件的时间)
Dir.foreach("testdir") {|f| puts File.ctime(x) }
【讨论】: