スキャンした書類の画像のファイル名が、ページ順ではなかった場合に番号を振りなおすスクリプトです。
- num_change.rb
- images/
- 画像_001.jpg
- 画像_002.jpg
- ...
スクリプト(num_change.rb)は次の通りです。
require 'fileutils' input_directory = './images' output_directory = './images_out' FileUtils.mkdir_p(input_directory) FileUtils.mkdir_p(output_directory) files = Dir.glob("#{input_directory}/*.jpg") def change_page_number(page_num) case page_num when 0 0 when 1 3 when 2 1 when 3 2 end end files.each do |file| filename = File.basename(file) m = /(.*)_(\d{3}).jpg/.match(filename) base_name = m[1] page_code = m[2] page_num_base = page_code.to_i(10) - 1 page_num = page_num_base % 4 page_code_to = format('%03d', change_page_number(page_num) + 4 * (page_num_base / 4) + 1) output_filename = "#{output_directory}/#{base_name}_#{page_code_to}.jpg" FileUtils.cp(file, output_filename) puts("#{file} -> #{output_filename}") end
処理を実行するには次のようにします。
cd (num_change.rbを作成したパス) ruby num_change.rb