文字化けしたファイル名を元に戻したいね

ext4ファイルシステムでファイル名が文字化けしてる。こういうのだいたい Windows 的なところから SJIS のままもってくるとこうなるよね。

[user01@server11 file]$ ls -la
合計 8
drwxrwxr-x 2 user01 user01 4096  8月 20 14:50 .
drwxr-xr-x 3 user01 user01 4096  8月 20 14:46 ..
-rw-rw-r-- 1 user01 user01    0  8月 20 14:46 ex00テストファイル.txt
-rw-rw-r-- 1 user01 user01    0  8月 20 14:47 ex01試験ファイル.txt
-rw-rw-r-- 1 user01 user01    0  8月 20 14:47 ex02?????t?@?C??.txt
-rw-rw-r-- 1 user01 user01    0  8月 20 14:46 testfile

こんな感じで1ファイルだけ「?」とか記号とか並んだ感じになってる。

[user01@server11 file]$ tar cvf arc01.tar *
ex00テストファイル.txt
ex01試験ファイル.txt
ex02\216\300\214\261\203t\203@\203C\203\213.txt
testfile

tarで表示するとやっぱりおかしなことになってる。

こんなときは convmv がとても便利。

[user01@server11 file]$ convmv -f sjis -t utf8 ./ -r --notest
Skipping, already UTF-8: ./ex01試験ファイル.txt
mv "./ex02 アt@C
               .txt"    "./ex02実験ファイル.txt"
Skipping, already UTF-8: ./ex00テストファイル.txt
Ready!
[user01@server11 file]$ ls -la
合計 20
drwxrwxr-x 2 user01 user01  4096  8月 20 14:53 .
drwxr-xr-x 3 user01 user01  4096  8月 20 14:46 ..
-rw-rw-r-- 1 user01 user01 10240  8月 20 14:50 arc01.tar
-rw-rw-r-- 1 user01 user01     0  8月 20 14:46 ex00テストファイル.txt
-rw-rw-r-- 1 user01 user01     0  8月 20 14:47 ex01試験ファイル.txt
-rw-rw-r-- 1 user01 user01     0  8月 20 14:47 ex02実験ファイル.txt
-rw-rw-r-- 1 user01 user01     0  8月 20 14:46 testfile

全ファイルをターゲットにしたところ、問題ないファイル名はスキップして、文字化けしてるファイル名だけ修復してくれた。コイツは便利。