bookscanのチューニング後の本の名前を変更する
kindle4_本の名前.pdf という名前が並んでいると見づらいので、 kindle4/本の名前_kindle4.pdf にする。
#!/usr/bin/env ruby dir = '/home/sho/share/books' pattern = /^(ipad|kindle\d|iphone4)_(.+)\.(.+)$/ files = Dir.glob(dir+'/*/*.pdf').map{|f| { :path => f, :name => f.split('/').last, :dir => File.dirname(f) } } files.delete_if{|f| !(f[:name] =~ pattern) or f[:path].split('/').include?('tmp') }.each{|f| begin device, name, ext = f[:name].scan(pattern).first raise 'filepath parse error' unless ext new_dir = f[:dir]+'/'+device Dir.mkdir new_dir unless File.exists? new_dir puts f[:path] new_fpath = "#{f[:dir]}/#{device}/#{name}_#{device}.#{ext}" File.rename(f[:path], new_fpath) puts " => #{new_fpath}" rescue => e STDERR.puts e end }