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 }
こ、これは使える・・!
改良したっっっっっっっっっっっっっっっw
そ、そうかっ!
Dir.foreach(‘.’) を Dir.foreach(dir) にすれば良かったのかあああああああああああ!!!!!