本質
標題が具体的で長ったらしいですが、つまり以下のことを実現したいのです。
Linux のファイル名の文字コードを UTF-8 と Shift-JIS の間で行き来したい(文字化けを防ぎたい)
結論
convmv
を使います。
1. インストール
インストールします。
$ sudo apt-get install convmv
2. 使う
あとはオプションを指定してコマンドを実行すればいいです。
例えば、以下の4つのファイルがあるとします。
$ ls おはよう!.txt こんにちは!.txt こんばんは!.txt さようなら!.txt
これらのファイルのファイル名を UTF-8 から Shift-JIS に変換するためには次のように実行します。
$ convmv -r -f utf8 -t sjis --notest *.txt mv "./おはよう!.txt" "./���͂悤�I.txt" mv "./こんにちは!.txt" "./�����ɂ��́I.txt" mv "./こんばんは!.txt" "./�������́I.txt" mv "./さようなら!.txt" "./���悤�Ȃ��I.txt" Ready! I converted 4 files in 0 seconds.
これらのファイルのファイル名を Shift-JIS から UTF-8 に変換するためには次のように実行します。
$ convmv -r -f sjis -t utf8 --notest *.txt mv "./�����ɂ��́I.txt" "./こんにちは!.txt" mv "./�������́I.txt" "./こんばんは!.txt" mv "./���͂悤�I.txt" "./おはよう!.txt" mv "./���悤�Ȃ��I.txt" "./さようなら!.txt" Ready! I converted 4 files in 0 seconds.
備考
GUIなアプリケーションでコードを自動変換するものは見つけられませんでした……*1。なので、現状では相手先の(受け側の)文字コードに合わせて手動で変換する必要があります。何とかならないか。
*1:Windows ならば Explzh がありますね