如何删除名称中带有多个冒号的文件?

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 分区上。


更新

我不认为是硬件问题。我能够访问(写入、删除、创建、解压缩等)所有其他文件。虽然,我无法访问有问题的文件。

Gil*_*il' 6

文件位于 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选项挂载。