Category Archives: 5-1.文字コード

Linux/Windowsのファイル名変換にconvmvを使う


『怪盗グルーのミニオン大脱走』
まだ見てないのですが、ミニオン語の歌に惹かれたので見に行く予定です。
ミニオンたちと人間は言語が違っても通じ合えるので素敵です。

今回はWindowsとLinux間での文字コード変換のためのconvmvの使い方です。

テストファイル準備

適当にUTF8のファイル名のファイルを作ります。

takk@takkpc:~$ touch `ruby -e 'puts ("あ".."こ").to_a.join("")'`.txt
takk@takkpc:~$ ls
あぃいぅうぇえぉおかがきぎくぐけげこ.txt
takk@takkpc:~$ 

ファイル名の文字コード

作ったファイルのファイル名のエンコードを調べてみましょう。

takk@takkpc:~$ ls
あぃいぅうぇえぉおかがきぎくぐけげこ.txt
takk@takkpc:~$ ls | nkf --guess
UTF-8 (LF)
takk@takkpc:~$ 

UTF8ですね。

convmvでファイル名変換

ではconvmvでSJISに変換します。
オプションの-fはfrom -tは、toですので、UTF8からSJISに変換する場合は、
-f utf8 -t sjisというように指定します。

takk@takkpc:~$ convmv -f utf8 -t sjis *
Starting a dry run without changes...
mv "./あぃいぅうぇえぉおかがきぎくぐけげこ.txt"	"./������������������������������������.txt"
No changes to your files done. Would have converted 1 files in 0 seconds.
Use --notest to finally rename the files.
takk@takkpc:~$ 

確認しましょう。

takk@takkpc:~$ ls
あぃいぅうぇえぉおかがきぎくぐけげこ.txt
takk@takkpc:~$ 

あれ、変換されてませんね。

convmvは、いきなり変換しない親切設計になってますので、変換を実施する場合は、–notestが必要です。
–notestをつけてもう一度実行してみましょう。

takk@takkpc:~$ !-2 --notest
convmv -f utf8 -tsjis * --notest
mv "./あぃいぅうぇえぉおかがきぎくぐけげこ.txt"	"./������������������������������������.txt"
Ready! I converted 1 files in 0 seconds.
takk@takkpc:~$ ls
????????????????????????????????????.txt
takk@takkpc:~$ 

nkfコマンドでファイル名がSJISになったか調べてみます。

takk@takkpc:~$ ls | nkf --guess
Shift_JIS (LF)
takk@takkpc:~$ 

SJISになりました。