diary/20101016

ID: 444 | 作成日: 2010/10/16 [Sat] 21:21:00 | 最終更新: 2010/11/17 [Wed] 23:38:59
FrontPage / diary / 20101016

openSUSEで文字化けしたファイル名を変換する

久しぶりにLinux関連のネタを。

少し前に、"openSUSE"11.2でWeb上で公開されていた、ある圧縮ファイルをダウンロードして展開したところ、ファイル名やディレクトリ名が文字化けしていました。

それだけだったらいいんだけど、それらの文字化けしたファイルたちが名前の変更も削除も何もできないという・・・

WindowsとLinuxの文字コードの違いによるものから、日本語を含むファイル名が圧縮ファイルの中にあるとこうなるようで。

そこで、ネットで調べてみたところ、"convmv"を使うといいらしいとのことで、早速試してみました。

"convmv"はファイル名やディレクトリ名を指定した文字コードに再変換してくれるツールで、"openSUSE"の場合、オフィシャルパッケージに含まれているので"YaST"でインストールできます。

インストールした後は、"コンソール"から

convmv -r -f sjis -t utf8 "文字化けしたファイル・ディレクトリが収められたディレクトリのパス"

と入力すると、実際には変換されず変換後にどういった名前になるかかが表示されます。
ここでまず、実際の作業前にちゃんと変換されるかを確認することができます。

"sjis"と書かれた部分が変換するファイルやディレクトリの文字コード。
"utf8"と書かれた部分が変換後の文字コードになります。

前述のテストで問題がなかった場合は、続けて

convmv -r -f sjis -t utf8 "文字化けしたファイル・ディレクトリが収められたディレクトリのパス" --notest

と、前のコマンドに"--notest"を追記して実行します。

実際に、自分で試したときはうまく文字化けが直った場合と直らなかった場合がありましたが、文字化けしたままの場合でもファイル名変更や削除・移動といったファイルの操作はできるようになったので、操作後に任意の名前に変更しました。

ちなみに、通常、変換前の文字コードは"sjis"でいいのですが、なぜか今回の作業で変換したいくつかの圧縮ファイルが"sjis"では文字の変換ができずファイル操作もできなかったのが、"eucjp"だとファイル名は文字化けしたままながらファイル操作はOKというパターンもありました。

今回の作業で、以下のページを参考にさせていただきました。

なお、文字化けして操作できなくなったファイルを削除する方法が、以下のページに解説されているので、そちらも参考になるかと思います。