名前に複数のコロンを持つファイルが多数あるフォルダがあります。たとえば: Mail::Message::Field::Full.3pm.gz
。
削除する方法を知りたいです。
頑張りました
rm Mail::Message::Field::Full.3pm.gz
rm Mail\:\:Message\:\:Field\:\:Full.3pm.gz
rm "Mail::Message::Field::Full.3pm.gz"
すべての結果は同じですrm: cannot remove 'Mail::Message::Field::Full.3pm.gz': Input/output error
。
また、一般ユーザーアカウントとrootユーザーを試してみました。どちらの場合も、結果は上記と同じです。
rm
オプションと-f
結果は同じです。
ファイル名を変更するときも同じ問題が発生します。
もちろん、フォルダへの書き込みアクセス権があります。
の出力はls -l
次のとおりです。
ls: cannot access Mail::Message::Field::Full.3pm.gz: Input/output error
-????????? ? ? ? ? ? Mail::Message::Field::Full.3pm.gz
これが重要かどうかはわかりませんが、ファイルはNTFSパーティションにあります。
修正する
ハードウェアの問題ではないようです。他のすべてのファイルにアクセス(書き込み、削除、作成、解凍など)できます。それにもかかわらず、問題のファイルにアクセスできません。
答え1
ファイルがNTFSパーティションにあることが重要です。
ほとんどのUNIXシステムでは、この:
記号は特殊文字ではなく、特にLinuxでは/
特殊文字です。カーネルには意味がありません(一部のアプリケーションでは特別な意味を与えるため、使用しない方が最善です)。 Linuxの一般的なext2/ext3/ext4を含むほとんどのUNIXファイルシステムでは、:
他の文字と同様にファイル名に使用できます。
NTFSはWindows環境から来たため、より厳しい(しかしオプション)ルールがあります。 Windowsでは:
ファイル名には許可されていません(またはむしろカーネルレベルでは許可されていますが、ほとんどのアプリケーションではサポートされていません)。基本シェルを含む)。これオープンソースNTFSドライバ NTFS-3Gファイル名を作成しないようにし:
、既存の無効なファイル名が見つかった場合は混乱する可能性があります。
移植性と相互運用性を最大化するために、常にPOSIX名前空間に新しいファイルを作成します。つまり、ファイル名は大文字と小文字を区別し、およびを除く
'/'
すべての文字を受け入れます'\0'
。一部のアプリケーションが混乱する可能性がありますが、これはWindowsでは完全に正当です。
最新バージョンのntfs-3gドライバを使用しており、ファイルシステムがwindows_names
このオプションでインストールされていないことを確認してください。
答え2
名前を変更するときに同じように適用されることは、名前を変更できないか名前を変更することができますが、削除すると同じ問題が発生することを意味します(おそらくそうではありません)。
確認してみてください。ワイルドカードを試しましたか?ファイルが多すぎない場合は、次のようにしてみてください。
rm -i Mail*essag**.gz
これにより、-i
削除する前にメッセージが表示され、必要なファイルのみが削除されていることを確認できます。
ただし、これがファイル名属性の問題ではなく、権限またはファイルシステムの問題であると疑われます。あるいは、いくつかのハードウェア障害を示すものであってもよい。
答え3
すべての内容を注意深く読んだ結果、NTFSファイルシステムが破損していると思われます。
私は以下をお勧めします:
- Windowsで起動
- 完全なファイルシステムチェックを実行します(Linuxツールはこの作業には不十分です)。
- Linuxで再起動してもう一度やり直してください。