デジカメ取り込み画像の日付フォルダ振り分け
デジカメを買い換えたら、画像を取り込むソフトウェアのフォルダの切り方が異なる仕様だったため、自動で振り分けるスクリプトを作りました。
■フォルダ構成
・旧デジカメ(こっちの構成の方がお気に入り)
DigitalCamera
└YYYY
└YYYY_MM_DD
・新デジカメ
DigitalCamera
└YYYYMMDD
■move_picture_folders.rb
require 'fileutils' # 対象ディレクトリの内容を移動し、対象ディレクトリを削除する def move_pictures(src_dir, target_dir) p 'move_pictures()' p ' src_dir:' + src_dir p ' target_dir:' + target_dir FileUtils.mv(Dir.glob(src_dir + '/**/*'), target_dir, {:force => true}) FileUtils.rmdir(src_dir) end # 対象ディレクトリの移動 # 移動先にフォルダが存在しない場合は、リネームで処理 def move_folders(src_dir) yyyy = src_dir[0..3] mm = src_dir[4..5] dd = src_dir[6..7] new_dir_name = yyyy + '_' + mm + '_' + dd target_dir = File.join(File.dirname(src_dir), yyyy, new_dir_name) if File.exist?(target_dir) move_pictures(src_dir, target_dir) else p 'rename()' p ' src_dir:' + src_dir p ' target_dir:' + target_dir File::rename(src_dir, target_dir) end end # DigitalCameraフォルダ内のYYYYMMDDフォルダの内容を # YYYYフォルダ内のYYYY_MM_DDフォルダとして移動する def move_them(target_path) if target_path Dir::chdir(target_path) else return end Dir.foreach(target_path) {|f| if /\d{8}/ =~ f move_folders(f) end } end # # メインルーチン # 引数0:DigitalCameraフォルダパス # # 削除 move_them(ARGV[0])