サーバの環境を刷新した際などに、ファイル名の文字コードを変更したい場合がある。そういう場合には、convmvが便利だ。
debianならパッケージが用意されているので、aptでインストールできる。
apt-get install comvmv
convmvはそのものずばり、ファイル名の文字コードを変換して、リネームしてしまうスクリプトだ。例えばEUC-JPのファイル名を、UTF-8に変換するには以下のようにする。変換結果が確認できる。
convmv -f eucjp -t utf8 ???ܸ?.txt
Starting a dry run without changes...
mv "./����.txt" "./日本語.txt"
No changes to your files done. Use --notest to finally rename the files.
確認した結果に問題がなく、実際に変換を行いたい場合は、–notestオプションをつけて実行する。
convmv -f eucjp -t utf8 --notest ???ܸ?.txt
Your Perl version has fleas #37757 #49830
mv "./����.txt" "./日本語.txt"
Ready!
-rオプションを指定すれば、ディレクトリの中身を再帰的に変換することができる。1ファイルだけファイル名の文字コードが異なる場合は少ないと思うので、この使い方が主になるだろう。以下の例ではカレントディレクトリ以下のすべてのファイルのファイル名を実際にEUC-JPからUTF-8へ変換しリネームする。
convmv -r -f eucjp -t utf8 --notest *