如何在ruby中获取上次修改时间顺序的文件?我能够轻松地敲击键盘来实现这一目标:
file_info = Hash[*Dir.glob("*").collect {|file| [file, File.ctime(file)]}.flatten]
sorted_file_info = file_info.sort_by { |k,v| v}
sorted_files = sorted_file_info.collect { |file, created_at| file }
但我想知道是否有更复杂的方法来做到这一点?
答案 0 :(得分:57)
简单地说:
# If you want 'modified time', oldest first
files_sorted_by_time = Dir['*'].sort_by{ |f| File.mtime(f) }
# If you want 'directory change time' (creation time for Windows)
files_sorted_by_time = Dir['*'].sort_by{ |f| File.ctime(f) }
答案 1 :(得分:10)
这是一个真正的问题,基于* nix的文件系统不会保留文件的创建时间,只能保留修改时间。
Windows确实会对其进行跟踪,但您只能尝试向底层文件系统寻求帮助。
此外,ctime
并不意味着“创建时间”,而是“更改时间”,这是目录信息POINTING到文件的更改时间。
如果您想要文件的修改时间,那就是mtime
,这是文件的更改时间。这是一个微妙但重要的区别。
答案 2 :(得分:4)
Dir.glob("*").sort {|a,b| File.ctime(a) <=> File.ctime(b) }