ファイル(ディレクトリ)を更新日時順にコピーする(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