前言
眾所周知在Linux中,有時(shí)候會(huì)遇到文件名是亂碼或者是某些特殊中文的文件,這時(shí)候通過(guò)文件名就很難刪除。
同時(shí),對(duì)于linux/152764.html">linux中的任何一個(gè)文件都必然有其唯一的inode值,這時(shí)候就可以通過(guò)inode來(lái)刪除異常文件名的文件。
操作的對(duì)象一般為類(lèi)似下面的文件:
[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
產(chǎn)生這類(lèi)文件的原因:
1.上傳文件時(shí)網(wǎng)絡(luò)異常導(dǎo)致
2.Windows創(chuàng)建的某些文件名在Linux下無(wú)法正常識(shí)別
3.中文特殊字符無(wú)法識(shí)別
解決方法如下:
1.查詢(xún)這些文件的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?
以上,最左邊的數(shù)字即為對(duì)應(yīng)文件的inode值,不過(guò)無(wú)法直接使用rm命令刪除文件,需要其他命令配合使用
2.刪除異常文件
正常情況下這些文件也是可遇不可求的,不過(guò)涉及到rm的命令要小心謹(jǐn)慎,事前做一下測(cè)試,熟練下操作怎么也是不為過(guò)的,沒(méi)有這些亂碼的文件,可以使用正常的文件做測(cè)試,
有以下這幾種方法:
先創(chuàng)建需要的文件
[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參數(shù)進(jìn)行刪除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參數(shù)結(jié)合rm命令刪除bbb文件(進(jìn)行刪除確認(rèn))
[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參數(shù)結(jié)合rm命令刪除ccc文件(不進(jìn)行刪除確認(rèn))
[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結(jié)合刪除ddd文件(無(wú)法使用-i參數(shù)進(jìn)行刪除確認(rèn))
[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選項(xiàng)確認(rèn)文件名 [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
總結(jié)一下:
以上幾種不同的刪除方式,總體來(lái)說(shuō)都是通過(guò)指定文件的inode值,使用find命令的-inum選項(xiàng)確認(rèn)其文件名,然后傳遞給rm命令進(jìn)行刪除
完畢,呵呵呵
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)VEVB武林網(wǎng)的支持。
新聞熱點(diǎn)
疑難解答
圖片精選