ファイル名の文字コード変換

俺メモ

ファイルの中身ではなく、ファイル名そのものの文字コードを変換するには、convmvというコマンドを使う。

正直言って、コマンドの名前さえ分かれば、後はググるなりmanするなり何なりすれば万事オッケーなのだが、とりあえずメモしておく。

コマンド自体は大抵、各システムのパッケージ管理システムから問題なくインストールできるはず。

使い方は-fオプションに元の文字コードを、-tに変換先の文字コードを指定し、ファイル名を続けるだけ。
今回やりたいことの性質上、化けまくってるファイルの名前を一生懸命タイプするよりは、あるディレクトリ配下をアスタリスクで指定するのがまあ普通。

コマンド実行イメージ。

$ convmv -f euc-jp -t utf8 *
(略)
No changes to your files done. Use --notest to finally rename the files.

実はこれだけでは実際に変換は行われず、単に変換後のイメージを表示するだけ。実際に変換するには、メッセージの通り、--notestをつけて実行する。

$ convmv --notest -f euc-jp -t utf8 *
(略)

サブディレクトリまで再帰的に実行したいときは、お決まりの-rオプションをつける。

また、convmv --listとすれば、指定できる文字コード一覧が表示される。
が、実際に使うのは下記3つだろう。

euc-jp, utf8, shiftjis