名前に複数のコロンを持つファイルが多数あるフォルダがあります。たとえば: 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
このオプションでインストールされていないことを確認してください。