删除 Linux 中文件名不正确的损坏文件

删除 Linux 中文件名不正确的损坏文件

昨晚我的 Dovecot 服务器死机了,它损坏了用户邮件目录中的一个文件。文件名现在包含特殊字符,无法删除,所有命令行工具都说找不到该文件,尽管它通过 LS 命令显示出来。

1386141318.M854059PΈ3Ώ62.email.vantagetitle.com,S?11304,W11473:2,Sc

您可以看到名称中的特殊字符,例如“Ώ”或“Έ”。

我似乎找不到任何方法来删除该文件。

我应该做一个fsck吗?

编辑1:

我最终创建了一个新的“cur”目录,并将所有好的电子邮件移至其中。我将旧的“cur”目录重命名为“bad cur”

我已尝试以下操作...

sh-3.2# rm -rf badcur
rm: badcur: Directory not empty
sh-3.2# cd badcur
sh-3.2# ls
1386141318.M854059PΈ3Ώ62.email.vantagetitle.com,S?11304,W?11473:2,Sbc
sh-3.2# rm -rf 1386141318.M854059PΈ3Ώ62.email.vantagetitle.com,S?11304,W?11473:2,Sbc
sh-3.2# ls
1386141318.M854059PΈ3Ώ62.email.vantagetitle.com,S?11304,W?11473:2,Sbc
sh-3.2# ls -i
ls: 1386141318.M854059PΈ3Ώ62.email.vantagetitle.com,S?11304,W11473:2,Sbc: No such file or directory
sh-3.2#  

答案1

您可以尝试使用-i它将向您提出一个问题

rm -i 1386141318.M854059P*
rm: remove regular file '1386141318.M854059PΈ3Ώ62.email.vantagetitle.com,S?11304,W11473:2,Sc'?

并回答y


您可以使用文件的 inode 编号删除文件。使用ls -li获取文件的 inode 编号。获取后,使用 find 删除它

find . -inum <inode number> -delete

答案2

解决这些问题的最简单方法是在 rm 后使用双破折号 (--)。

# rm -- 1386141318.M854059P*

双破折号告诉命令 rm 您已经完成传递命令开关,接下来是它应该进行的操作。

-斯科特

答案3

如果存在,你可以使用以下方式浏览目录午夜指挥官

输入mc,使用箭头键选择文件,然后按F8删除它

答案4

如果有可用的 GUI,请尝试使用 GUI 删除该文件。

我错误地尝试了tar xvfWindows ZIP 文件。它弹出一堆错误,然后我得到的是这个 0 字节文件,而不是解压后的文件,文件名称非常长,其中的问号代表不可打印的字符/值。

我使用 Gnome 中的标准 GUI 文件浏览工具将文件发送到废纸篓,然后使用 GUI 进入废纸篓,永久删除该文件,以防该文件留在废纸篓中可能导致任何类型的错误。

相关内容