文件的inode定義了文件的大小、所有人等文件的特征。每個文件和目錄都有自己唯一的inode數字。所以下面這篇文章主要給大家介紹了關于linux下使用inode刪除指定文件的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
前言
眾所周知在linux中,有時候會遇到文件名是亂碼或者是某些特殊中文的文件,這時候通過文件名就很難刪除。
同時,對于linux中的任何一個文件都必然有其唯一的inode值,這時候就可以通過inode來刪除異常文件名的文件。
操作的對象一般為類似下面的文件:
[root@server?tmp]#?ll? ? 總用量?61404-rw-r--r--?1?root?root?0?6月?16?14:58??? ? -rw-r--r--?1?root?root?0?6月?19?12:29???? ? -rw-r--r--?1?root?root?0?6月?21?14:53????3kqU-rw-r--r--?1?root?root?0?6月?21?14:53??6;?Xf??mA???9???T?? ? -rw-r--r--?1?root?root?0?6月?19?12:29?9y??????sy?z?D?l???I?MO???8z????@]9??U@?XlAI]?k
產生這類文件的原因:
????? 1.上傳文件時網絡異常導致
????? 2.Windows創建的某些文件名在Linux下無法正常識別
????? 3.中文特殊字符無法識別
解決方法如下:
1.查詢這些文件的inode值
ll -i
[root@server?tmp]#?ll?-i? ? 總用量?6140415206100?-rw-r--r--?1?root?root?0?6月?16?14:58??15206090?-rw-r--r--?1?root?root?0?6月?19?12:29???15206092?-rw-r--r--?1?root?root?0?6月?21?14:53????3kqU15206233?-rw-r--r--?1?root?root?0?6月?21?14:53??6;?Xf??mA???9???T?? ? 15206235?-rw-r--r--?1?root?root?0?6月?21?14:53?A??K?
以上,最左邊的數字即為對應文件的inode值,不過無法直接使用rm命令刪除文件,需要其他命令配合使用
2.刪除異常文件
正常情況下這些文件也是可遇不可求的,不過涉及到rm的命令要小心謹慎,事前做一下測試,熟練下操作怎么也是不為過的,沒有這些亂碼的文件,可以使用正常的文件做測試,
有以下這幾種方法:
先創建需要的文件
[root@zstest1?tmp]#?cd?/tmp? ? [root@zstest1?tmp]#?touch?aaa?bbb?ccc?ddd?eee? ? [root@zstest1?tmp]#?ll?-i? ? 總用量?01442581?-rw-r--r--?1?root?root?0?9月?22?15:00?aaa1442582?-rw-r--r--?1?root?root?0?9月?22?15:00?bbb1442583?-rw-r--r--?1?root?root?0?9月?22?15:00?ccc1442584?-rw-r--r--?1?root?root?0?9月?22?15:00?ddd1442585?-rw-r--r--?1?root?root?0?9月?22?15:12?eee
(1)使用find自帶的delete參數進行刪除aaa文件
[root@zstest1?tmp]#?find?./*?-inum?1442581?-delete? ? [root@zstest1?tmp]#?ll?-i? ? 總用量?0? ? 1442582?-rw-r--r--?1?root?root?0?9月?22?15:00?bbb? ? 1442583?-rw-r--r--?1?root?root?0?9月?22?15:00?ccc? ? 1442584?-rw-r--r--?1?root?root?0?9月?22?15:00?ddd? ? 1442585?-rw-r--r--?1?root?root?0?9月?22?15:12?eee
(2)使用find自帶的-exec參數結合rm命令刪除bbb文件(進行刪除確認)
[root@zstest1?tmp]#?find?./*?-inum?1442582?-exec?rm?-i?{}?;? ? rm:是否刪除普通空文件?"./bbb"?y? ? [root@zstest1?tmp]#?ll?-i? ? 總用量?0? ? 1442583?-rw-r--r--?1?root?root?0?9月?22?15:00?ccc? ? 1442584?-rw-r--r--?1?root?root?0?9月?22?15:00?ddd? ? 1442585?-rw-r--r--?1?root?root?0?9月?22?15:12?eee
(3)使用find自帶的-exec參數結合rm命令刪除ccc文件(不進行刪除確認)
[root@zstest1?tmp]#?find?./*?-inum?1442583?-exec?rm?-f?{}?;? ? [root@zstest1?tmp]#?ll?-i? ? 總用量?0? ? 1442584?-rw-r--r--?1?root?root?0?9月?22?15:00?ddd? ? 1442585?-rw-r--r--?1?root?root?0?9月?22?15:12?eee
(4)使用find和xargs結合刪除ddd文件(無法使用-i參數進行刪除確認)
[root@zstest1?tmp]#?find?./*?-inum?1442584?|xargs?rm?-f? ? [root@zstest1?tmp]#?ll?-i? ? 總用量?0? ? 1442585?-rw-r--r--?1?root?root?0?9月?22?15:12?eee
(5)使用rm命令刪除指定文件(由find命令找到的文件名)
[root@zstest1?tmp]#?rm?`find?./*?-inum?1442574`? ? rm:是否刪除普通空文件?"./eee"?y? ? [root@zstest1?tmp]#?ll? ? 總用量?0? ? #?使用find命令的-inum選項確認文件名? ? [root@zstest1?tmp]#?touch?fff? ? [root@zstest1?tmp]#?ll?-i? ? 總用量?01442574?-rw-r--r--?1?root?root?0?9月?22?15:38?fff? ? [root@zstest1?tmp]#?find?./*?-inum?1442574? ? ./fff
總結一下:
以上幾種不同的刪除方式,總體來說都是通過指定文件的inode值,使用find命令的-inum選項確認其文件名,然后傳遞給rm命令進行刪除
完畢,呵呵呵
總結