Как отсортировать файлы по времени изменений?

Вот неэффективный способ:

   Dir.glob("*").sort{|a,b| File.mtime(b) <=> File.mtime(a)}

Хотя это и работает, возвращая список в обратном хронологическом порядке, это не очень эффективный способ, так как для каждого сравнения у операционной системы запрашивается время изменения файлов.

Более эффективная версия немного сложнее:

   Dir.glob("*").collect! {|f| [File.mtime(f), f]}.
      sort{|a,b| b[0] <=> a[0]}.collect! {|e| e[1]}

Обсуждение

Совершенно

Совершенно неверно, эффективная версия намного проще.


Dir.glob("*").sort_by{|f| File.mtime(f)}