読者です 読者をやめる 読者になる 読者になる

Rubyでファイルの一覧を数値順にソートする

Ruby
irb(main):009:0> paths = Dir::glob("C:/path/*.yml")
=> ["C:/path/1.yml", "C:/path/10.yml", "C:/path/11.yml", "C:/path/12.yml", "C:/path/13.yml", "C:/path/14.yml", "C:/path/15.yml", "C:/path/16.yml", "C:/path/17.yml", "C:/path/18.yml", "C:/path/19.yml", "C:/path/2.yml", "C:/path/20.yml"]
irb(main):015:0> paths.sort {|a,b| File.basename(a).to_i <=> File.basename(b).to_i}
=> ["C:/path/1.yml", "C:/path/2.yml", "C:/path/3.yml", "C:/path/4.yml", "C:/path/5.yml", "C:/path/6.yml", "C:/path/7.yml", "C:/path/8.yml", "C:/path/9.yml", "C:/path/10.yml", "C:/path/11.yml", "C:/path/12.yml", "C:/path/13.yml", "C:/path/14.yml", "C:/path/15.yml", "C:/path/16.yml", "C:/path/17.yml", "C:/path/18.yml", "C:/path/19.yml", "C:/path/20.yml"]

File.basename

File.basename("/home/gumby/work/ruby.rb")          #=> "ruby.rb"
File.basename("/home/gumby/work/ruby.rb", ".rb")   #=> "ruby"