Deleting those Pesky Hard to Delete files…

Sometimes we find a file in our filesystem with a weird non realistic name, which was probably created by mistake. There can be hundreds of reasons why this file got created but due to its unique uncharacteristic name its almost impossible to delete the file in the usual way(right click delete or rm on command line)

Eg,. a file with the name “??@@???@8” got created on my home drive and I cannot delete, move or rename the file.

To delete such a file we need to delete it using its inode number as the reference. You can get the inode number of the file by executing the following command in the directory containing the file

ls -il

Output:
1130895 -rw-r--r-- 1 tech tech 0 2010-07-02 15:49 ??@@???@8
1131122 drwxr-xr-x 4 tech tech 4096 2010-03-12 22:54 Bills
286834 drwxr-xr-x 5 tech tech 4096 2010-05-06 12:26 Blog
1131109 drwxr-xr-x 2 tech tech 4096 2010-05-06 12:24 Books
1139338 drwxr-xr-x 3 tech tech 4096 2010-05-06 12:26 Friends
1156511 drwxr-xr-x 3 tech tech 4096 2010-07-31 11:02 Photos

As you can see the console does not recognize the name of the file correctly, this is exactly the reason why it was failing to delete the file. The first number in the line is the inode number. To delete the file we will use the following command:
find . -inum <inode-number> -exec rm -i {} \;

Output:
tech@chandrahasa.com:~/Documents$ find . -inum 1130895 -exec rm -i {} \;
rm: remove regular empty file `./\001\223@@\360\006\v@8'? y
tech@chandrahasa.com:~/Documents$

Enhanced by Zemanta