ファイル(ディレクトリ)を更新日時順にコピーする(Ruby)

変数 snd に送られるファイル(またはディレクトリ)の入ったディレクトリ、rsv に送り先のディレクトリを入れます。確実に時間順にするために 1.2 秒間スリープしています。

require 'fileutils'

snd = '/home/***/Pictures'; rsv = '/media/***/99EE-E8C41/picture'
Dir.chdir(snd)
name = Dir.glob("*")
tm = []
name.each {|n| tm << File.stat(n).mtime}
f = name.zip(tm)
f.sort! {|a, b| a[1] <=> b[1]}
f.each do |name|
  puts name[0]
  FileUtils.cp_r(name[0], rsv)
  sleep(1.2)
end

 

※後記(2017/10/26)
コメント欄で教えて頂いた方法で書き直してみました。

require 'fileutils'

snd = '/home/***/Pictures'; rsv = '/media/***/99EE-E8C41/picture'
Dir.chdir(snd)
Dir.glob("*").sort_by {|v| File.stat(v).mtime}.each do |name|
  puts name
  FileUtils.cp_r(name, rsv)
  sleep(1.2)
end