ファイル名の文字コード一括変換

 WindowsからSCPで音楽ファイルやらデジカメ画像やらを移したら、見事に文字化けしたので、ファイル名のエンコードを変えるスクリプトをRubyで書いた。ディレクトリはその前に変換しちゃったので、ファイルだけの変換だけど… Ruby で文字コード関係扱うのは、 kconv てのを使うだけでいいらしく楽チンだ。るびまを参考にした\(^o^)/ なぜか、chdir しないとディレクトリやファイルが見付かりませんっていわれてしまう(´・ω・`)

 1 #! /usr/bin/ruby -w
 2 require 'kconv'
 3
 4 allDirs = Dir::glob("/home/chu/**/").sort {
 5   |a,b| b.split('/').size < => a.split('/').size
 6 }
 7
 8 allDirs.each{|dir|
 9   Dir::chdir(dir)
10   files = Dir::entries(dir)
11   for file in files
12     if File::ftype(file) == "file"
13       encoding = Kconv.guess(file)
14       if encoding != 6
15         newName = Kconv.kconv(file, Kconv::UTF8, Kconv::AUTO)
16         File.rename(file,newName)
17       end
18     end
19   end
20 }

コメント

  1. そ、そうかっ!
    Dir.foreach(‘.’) を Dir.foreach(dir) にすれば良かったのかあああああああああああ!!!!!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です