名前に複数のコロン記号が含まれるファイルが多数含まれるフォルダーがあります。例: 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その中にファイル名を作成できないようにしようとします:
が、既存の無効なファイル名が見つかった場合は混乱する可能性があります。
のNTFS-3g マニュアルと述べています
移植性と相互運用性を最大限に高めるため、常に POSIX 名前空間に新しいファイルを作成します。つまり、ファイル名は大文字と小文字が区別され、
'/'
と を除くすべての文字が許可されます'\0'
。これは Windows では完全に合法ですが、一部のアプリケーションでは混乱する可能性があります。
最新バージョンの ntfs-3g ドライバーを使用していること、およびファイルシステムがオプションでマウントされていないことを確認してくださいwindows_names
。
答え2
名前を変更するときにも同じことが当てはまるというのは、名前を変更できないということでしょうか、それとも名前を変更することはできるが、削除するときに同じ問題が発生するということでしょうか (おそらくそうではないと思います)。
確認ですが、ワイルドカードを使ってみましたか?ファイルが多すぎない場合は、次のようなものを試すことができます。
rm -i Mail*essag**.gz
削除前にプロンプ-i
トが表示されるので、必要なファイルのみを削除していることを確認できます。
ただし、これはファイル名の特性の問題ではなく、権限またはファイル システムの問題であると思われます。あるいは、何らかのハードウェア障害の兆候である可能性もあります。
答え3
これに関するやり取りをすべて読んだ後、NTFS ファイルシステムが破損しているのではないかと疑います。
お勧めします:
- Windowsの起動
- 完全なファイルシステムチェックを実行する (Linux ツールはまだこのタスクには十分ではありません)
- Linux を再起動して、もう一度試します。