aptitudeでconvmvパッケージを検索、インストール。
# aptitude search convmv p convmv - filename encoding conversion tool p fuse-convmvfs - mirrors a whole filesystem tree from one charset to another # aptitude install convmv The following NEW packages will be installed: convmv 0 packages upgraded, 1 newly installed, 0 to remove and 1 not upgraded. Need to get 20.1 kB of archives. After unpacking 90.1 kB will be used. Get:1 http://ftp.jp.debian.org/debian/ squeeze/main convmv all 1.12-2 [20.1 kB] Fetched 20.1 kB in 0s (29.6 kB/s) Selecting previously deselected package convmv. (Reading database ... 71151 files and directories currently installed.) Unpacking convmv (from .../archives/convmv_1.12-2_all.deb) ... Processing triggers for man-db ... Setting up convmv (1.12-2) ...
テスト用ディレクトリとファイルの作成。
$ mkdir -p `echo "テスト/テスト/テスト" | nkf --sjis` $ touch `echo "テスト.txt" | nkf --sjis` $ touch `echo "テスト/テスト.txt" | nkf --sjis` $ touch `echo "テスト/テスト/テスト.txt" | nkf --sjis` $ ls -R .: ?e?X?g ?e?X?g.txt ./?e?X?g: ?e?X?g ?e?X?g.txt ./?e?X?g/?e?X?g: ?e?X?g ?e?X?g.txt ./?e?X?g/?e?X?g/?e?X?g:
変換が成功するか確認するには、--notestオプションをつけないでconvmvを走らせる。実際にリネームする場合は--notestをつけて走らせるとメッセージが表示される。今回はsjisのファイル名をutf8のファイル名に変換するので、-f sjis -t utf8。再帰的に変換を行いたいので、-r。上手く変換できている様子。
$ convmv -r -f sjis -t utf8 * Your Perl version has fleas #37757 #49830 Starting a dry run without changes... mv "�e�X�g/�e�X�g.txt" "�e�X�g/テスト.txt" mv "�e�X�g/�e�X�g/�e�X�g.txt" "�e�X�g/�e�X�g/テスト.txt" mv "�e�X�g/�e�X�g/�e�X�g" "�e�X�g/�e�X�g/テスト" mv "�e�X�g/�e�X�g" "�e�X�g/テスト" mv "./�e�X�g" "./テスト" mv "./�e�X�g.txt" "./テスト.txt" No changes to your files done. Use --notest to finally rename the files.
--notestオプションをつけて走らせ、変換結果を再確認。上手く変換できていることがわかる。
$ convmv -r -f sjis -t utf8 --notest * Your Perl version has fleas #37757 #49830 mv "�e�X�g/�e�X�g.txt" "�e�X�g/テスト.txt" mv "�e�X�g/�e�X�g/�e�X�g.txt" "�e�X�g/�e�X�g/テスト.txt" mv "�e�X�g/�e�X�g/�e�X�g" "�e�X�g/�e�X�g/テスト" mv "�e�X�g/�e�X�g" "�e�X�g/テスト" mv "./�e�X�g" "./テスト" mv "./�e�X�g.txt" "./テスト.txt" Ready! $ ls -R .: テスト テスト.txt ./テスト: テスト テスト.txt ./テスト/テスト: テスト テスト.txt ./テスト/テスト/テスト: