Linux – Remove Corrupt File With Bad File Name Linux

corruptionfileslinux

Last night I had a Dovecot server lock up and it corrupted a file in a user's maildir. The file name now has special characters in it and can't be deleted, all command line tools say the file cannot be found, even though it shows up via the LS command.

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

You can see the special characters in the name such as "Ώ" or "Έ".

I can't seem to find any way to remove this file.

should I do an fsck?

EDIT 1:

I ended up making a new "cur" directory and moved all of the good emails over to it. I renamed the old "cur" directory to "bad cur"

I have tried the following…

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#  

Best Answer

You could try using -i which will present you with a question

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

and answer y


You may be able to delete the file using it's inode number. use ls -li to get the inode number of the file. Once you have it, use find to delete it

find . -inum <inode number> -delete