Ruby on rails 是否按创建的顺序从目录中提取文件?
现在我已经写了这个逻辑Ruby on rails 是否按创建的顺序从目录中提取文件?,ruby-on-rails,ruby,Ruby On Rails,Ruby,现在我已经写了这个逻辑 def get_file_names @files = [] Find.find("#{BACKUP_FILE_DIR}") do |path| file_stat = File.stat path @files << { :name => File.basename(path,".*"), :mtime => file_stat.mtime, :path
def get_file_names
@files = []
Find.find("#{BACKUP_FILE_DIR}") do |path|
file_stat = File.stat path
@files << {
:name => File.basename(path,".*"),
:mtime => file_stat.mtime,
:path => path
}
end
@files.delete_at(0)
@files = @files.sort_by { |file| file[:mtime] }
@file_names = []
@files.each do |f|
@file_names << [f[:name],f[:path]]
end
end
def get_文件名
@文件=[]
Find.Find(“#{BACKUP_FILE_DIR}”)do|路径|
file_stat=file.stat路径
@files File.basename(路径“.*”),
:mtime=>file_stat.mtime,
:path=>path
}
终止
@文件。在(0)处删除\u
@files=@files.sort_by{| file | file[:mtime]}
@文件名=[]
@文件。每个do | f|
@文件名您需要在file::Stat中使用“ctime”而不是mtime
mtime : time last modified
ctime : time created
试试这个:
# recursively collect file names based on ctime:
#
def get_file_names( dir )
Dir.chdir(dir)
Dir.entries(dir).each do |f|
# next if f == '.'
# next if f == '..'
next if f =~ /^\./ # ignore dot-files and dot-directories
full_filename = File.join( Dir.pwd , f)
if File.directory?( full_filename )
get_file_names( full_filename )
else
stat = File::Stat.new( full_filename )
@files_by_ctime[stat.ctime] ||= []
@files_by_ctime[stat.ctime] << full_filename
end
end
Dir.chdir('..')
end ; 1
@files_by_ctime = {}
get_file_names('/tmp')
@files_by_ctime.keys.sort.each do |ctime|
puts "Created: #{ctime} : #{@files_by_ctime[ctime].inspect}"
end ; 1
#基于ctime递归收集文件名:
#
def get_文件名(目录)
目录chdir(Dir)
目录条目(目录)。每个目录都有| f|
#下一步如果f=='。'
#下一步,如果f='..'
下一步如果f=~/^\./#忽略点文件和点目录
full_filename=File.join(Dir.pwd,f)
if File.directory?(完整文件名)
获取文件名(完整文件名)
其他的
stat=File::stat.new(完整文件名)
@文件_by_ctime[stat.ctime]| |=[]
@files\u by\u ctime[stat.ctime]查看此问题:仅获取文件夹名称。。不是文件夹中的文件名..>>文件按{f| File.ctime(f)}=>[“/db_backups”]排序,标题是创建时间,但在Linux和Mac OS上不可用,Ruby根本不支持它。ctime
或mtime
都不是创建时间,它们是文件修改时间的变体。