删除文件名错误的损坏文件 Linux

Tri*_*ech 5 linux files corruption

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

1386141318.M854059P?3?62.email.vantagetitle.com,S?11304,W11473:2,Sc
Run Code Online (Sandbox Code Playgroud)

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

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

我应该做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#  
Run Code Online (Sandbox Code Playgroud)

use*_*517 9

您可以尝试使用-iwhich 会给您一个问题

rm -i 1386141318.M854059P*
rm: remove regular file '1386141318.M854059P?3?62.email.vantagetitle.com,S?11304,W11473:2,Sc'?
Run Code Online (Sandbox Code Playgroud)

并回答 y


您可以使用它的 inode 号删除该文件。用于ls -li获取文件的 inode 编号。拥有后,使用 find 将其删除

find . -inum <inode number> -delete
Run Code Online (Sandbox Code Playgroud)