NTFS中の日本語ファイル名を何とかしたい
僕の環境では、iTunesでエンコードしたMP3ファイルをNTFS中に格納しています。NetBSDでそのNTFSをmountすると、ファイル名はUTF-8で見えます(NetBSDにはkernel iconvはありません)。で、gqmpeg(gqmpeg-0.20.0nb8)だとか端末だとかもろもろの環境はEUC-JPを使っているので、文字化けなどいろいろ問題があります。
仕方がないので、以下のスクリプトを使ってEUC-JPのファイル名でシンボリックリンクを作成して回避しようと思います。どうせNetBSDではNTFSはreadonlyでしかmountできないし。
#!/usr/bin/env ruby require 'find' require 'fileutils' require 'iconv' if ARGV.size < 2 $stderr.puts 'usage: lnmp3.rb from_dir to_dir' exit 1 end from_dir = ARGV.shift to_dir = ARGV.shift to_dir += '/' unless to_dir =~ /\/$/ Find.find(from_dir) do |file| next if FileTest.directory?(file) eucfile = Iconv.conv('eucjp-ms', 'utf-8', to_dir + file.sub(from_dir, '')) FileUtils.mkdir_p(File.dirname(eucfile)) FileUtils.ln_s(file, eucfile) end
Citrus iconvの文字化けが心配だったのですが、id:nurseさんのここを見るとutf-8からeucjp-msへの変換は大丈夫そうです。