ceo*_*nos 3 filesystems ntfs files
我有一个文件夹,里面有很多文件,其名称有多个冒号。例如: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"
Run Code Online (Sandbox Code Playgroud)
所有结果都相同:rm: cannot remove 'Mail::Message::Field::Full.3pm.gz': Input/output error.
另外,我尝试过使用普通用户帐户和 root 用户。在这两种情况下,结果与上述相同。
rmwith-f选项具有相同的结果。
重命名文件时也存在同样的问题。
当然,我对该文件夹具有写入权限。
的输出ls -l是
ls: cannot access Mail::Message::Field::Full.3pm.gz: Input/output error
-????????? ? ? ? ? ? Mail::Message::Field::Full.3pm.gz
Run Code Online (Sandbox Code Playgroud)
我不知道这是否重要,但文件位于 NTFS 分区上。
更新
我不认为是硬件问题。我能够访问(写入、删除、创建、解压缩等)所有其他文件。虽然,我无法访问有问题的文件。
文件位于 NTFS 分区上非常重要。
该:符号在大多数 unix 系统上不是特殊字符,尤其是在 Linux 上不是(只有特殊字符/)。它对内核没有任何意义(尽管某些应用程序确实赋予它特殊意义,因此最好不要使用它)。在大多数 unix 文件系统上,包括 Linux 惯用的 ext2/ext3/ext4,您可以:像使用任何其他字符一样在文件名中使用。
NTFS 有更严格(但可选)的规则,因为它来自 Windows 世界。在 Windows 中,:不允许在文件名中使用(或者更确切地说,它在内核级别允许但不受大多数应用程序支持,包括默认 shell)。在开源的NTFS驱动程序NTFS-3G试图阻止您创建的文件名:在里面,如果发现现有的无效文件名可能会混淆。
在NTFS-3G手册指出,
出于最大的可移植性和互操作性原因,它总是在 POSIX 命名空间中创建新文件。这意味着文件名区分大小写,并且允许除
'/'and之外的所有字符'\0'。这在 Windows 上是完全合法的,尽管某些应用程序可能会感到困惑。
确保您使用的是最新版本的 ntfs-3g 驱动程序,并且文件系统未使用该windows_names选项挂载。