Linux下如何使用inode刪除指定文件的方法示例

文件的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命令進行刪除

完畢,呵呵呵

總結

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享