目的
あるディレクトリ内の画像ファイルの名前が日本語になっていたので、DB上対応するidに一気に変更したかった。
120個くらいしかなかったので気合でもできたが、プログラミングの学習のためにあえてRubyで実装。
環境
ruby 2.4.2
準備
現状のファイル名と変更後のファイル名が1on1で対応しているcsv(などの)ファイルを作成しておく(以下、便宜的にnamechange.csv
と命名。当csvファイルは、1列目に現状のファイル名、2列目に変更後のファイル名を記載。)。
なお画像は、 ./imagefolder という名前のフォルダにすべて入っているものとする。
実装内容
namechange.csv
を配列化
namechange.rb
table = CSV.read('namechange.csv')
ディレクトリ内のファイル名を取得して配列に代入
namechange.rb
filenames = []
dir = Dir.open("imagefolder")
dir.each do |file|
filenames << file
end
x = filenames.length
x = x-1 #ディレクトリ内には.DS_Storeが存在するため長さを調整
tableの列を分解して代入
namechange.rb
prename = Array.new(x)
postname = Array.new(x)
for num in 0..x-1
prename[num] = table[num][0]
postname[num] = table[num][1]
end
tableの旧ファイルとディレクトリのファイル名を一致させて、ファイル名を書き換え
namechange.rb
for m in 0 .. x
y = prename.find_index(filenames[m])
if y == nil then
else
FileUtils.mv("./imagefolder/#{filenames[m]}","./imagefolder/#{postname[y]}")
end
end
p "Finish!"