2010-07-26

convmv -- ファイル名の文字コードを変換するスクリプト

スキャン本舗から送られてきた PDF ファイルは、ファイル名が丁寧にも本の題名になっていた。問題はその文字コードが Shift_JIS だったこと。Mac だと問題ないけど、Ubuntu Linux では激しく文字化けする。特に CUI で扱う場合は不便 (本当は英数字だけが理想なのだけど)。そこで、ファイル名の文字コードを変換するスクリプトを探したところ、convmv という Perl スクリプトを見つけた。

インストール

本家ページから最新版 (1.14) をダウンロードする。あとは展開して PATH の通った所に置くだけ。

$ tar xzvf convmv-1.14.tar.gz
$ cd convmv-1.14
$ make
pod2man --section 1 --center=" " convmv | gzip > convmv.1.gz
$ sudo make install
pod2man --section 1 --center=" " convmv | gzip > convmv.1.gz
mkdir -p /usr/local/share/man/man1/
mkdir -p /usr/local/bin/
cp convmv.1.gz /usr/local/share/man/man1/
install -m 755 convmv /usr/local/bin/

使い方

使い方は man ページか前述の解説ページが詳しい。

でも、全部他人任せもアレなので、一応自分で解説も書いおく。

今回のやうに Shift_JIS なファイル名を utf-8 に変換する場合のコード。

$ convmv -f sjis -t utf8 *

ファイル名の変換は危険な行為なので、実はこれだけではファイル名の変換は行なわれない。上記コマンドを実行すると、変換元のファイル名(文字化け)と変換後のファイル名が表示される。それを見て、ファイル名変換に問題がないことを確認しやう。OK なら、次のオプションを追加してコマンドを実行する。

$ convmv -f sjis -t utf8 * --notest

落ち穂拾い

  • EUC-JP を指定する時は euc を使う
  • 再帰的に処理を行なう場合は -r オプションを付ける
  • 元ファイルの文字コードが分からない場合は kcc -c filename とする。kcc はデフォールトでインストールされていない。使う場合は sudo apt-get install kcc でインストールすること

No comments:

Post a Comment