Unix や Linux でファイル名が文字化けして削除出来なくなったら

  • トゥィッターで言及(トゥィート)
  • アメーバで共有
  • はてなブックマークに登録
  • フェイスブックで共有
  • タンブラーで共有
  • グーグルプラスで共有

日本語ファイル名をシフト JIS コードのままサーヴァに置くと、稀にファイル名が文字化けする事があります。

  • このため、一部のウェブサーヴァでは日本語ファイル名の使用を禁じているところもあります。

ファイル名を UTF-8 に変換してファイルを置けば問題も起こり難くなりますが、様々な理由から本拠地サイトにはシフト JIS コードのファイル名にしたまま置いております。


文字化けするとファイルが削除出来なくなる!

さて、文字化けしてしまった場合、パーミッションに問題がなくても削除出来なくなる場合があります

ファイル名文字列が文字化けした場合、シフト JIS コードとして不正なバイナリが含まれてしまう場合があります。

そのような文字列の場合、エラーとなる箇所から先が表示出来なくなってしまいます。

結果、FTP クライアントなどで表示されているファイル名が実際にサーヴァにあるファイル名と異なってしまう事になります。

そして、そのようなファイル名の場合、当該ファイル名を指定して削除しようとしても「んなファイルねーよ」と言うエラーになってしまうのです。


対処法・アイノード番号を調べてそれで削除する

  1. テルネットなり SSH なりでサーヴァにログインして、問題のファイルが有るディレクトリに移動してから

    • ls -i

    とコマンドを入れます。

    そうすると、アイノード番号とファイル名が列挙されます。

  2. 次に、問題のファイル名の左側にある番号を nnnn として、

    • find . -inum nnnn -exec rm -rf {} \;

    とコマンドを入れます。

    これで、該当するファイルが消えてくれます。


注意・アイノード番号はくれぐれも間違えないように!

アイノード番号は、OS で扱っている全てのファイルに割当てられております。

番号が間違っていると、OS を破壊する事さえあります

可能なら、アイノード番号はコピー・ペーストで指定するようにしましょう。

  • 私が使っている WinSCP では、コマンドプロンプトでコピー・ペーストが可能でした。

参考文献

文字化けで削除できないファイルの削除
そのまんまですね。
スポンサーサイト