本文主要介绍使用inode删除文件名异常的文件的方法,供大家参考:在Linux中,有时会遇到文件出现乱码或者一些特殊的中文文件。这时候通过文件名是很难删除的。同时,Linux中的任何文件都必须有其唯一的inode值。这时可以通过inode删除文件名异常的文件。操作的对象一般是一个类似下面的文件:[root@servertmp]#lltotalusage61404-rw-r--r--1rootroot06月1614:58?-rw-r--r--1rootroot06月1912:29??-rw-r--r--1rootroot06月2114:53???3kqU-rw-r--r--1rootroot06月2114:53?6;?Xf??mA???9???T?-rw-r--r--1rootroot06月1912:299y??????sy?z?D?l??I?MO???8z?????@]9??U@?XlAI]?k出现此类文件的原因:1、上传文件时网络异常。2、Windows创建的部分文件名在Linux下无法识别。3.无法识别中文特殊字符。解决方法如下:1、查询这些文件的inodeValuell-i[root@servertmp]#ll-itotalusage6140415206100-rw-r--r--1rootroot0614:58?15206090-rw-r--r--1rootroot061912:29??15206092-rw-r--r--1rootroot06月2114:53???3kqU15206233-rw-r--1rootroot06月2114:53?6;?Xf??mA???9???T?15206235-rw-r--r--1rootroot06月2114:53A??K?上面最左边的数字是对应文件的inode值,但是不能直接使用rm命令删除文件,需要配合其他命令使用2.删除异常文件是正常的下载这些文件也很少见,但是你在使用rm命令时应该小心。事先做一个测试。方法如下:先创建需要的文件[root@zstest1tmp]#cd/tmp[root@zstest1tmp]#touchaaabbbcccdddeee[root@zstest1tmp]#ll-iTotalusage01442581-rw-r--r--1rootroot09月2215:00aaa1442582-rw-r--r--1rootrootSeptember2215:00bbb1442583-rw-r--r--1rootroott09月2215:00ccc1442584-rw-r--r--1rootroot09月2215:00ddd1442585-rw-r--r--1rootroot09月2215:12eee(1)使用find自带的delete参数删除aaa文件[root@zstest1tmp]#find./*-inum1442581-delete[root@zstest1tmp]#ll-itotalusage01442582-rw-r--r--1rootroot09月2215:00bbb1442583-rw-r--r--1rootroot09月2215:00ccc1442584-rw-r--r--1rootroot09月2215:00ddd1442585-rw-r--r--1rootroot09月2215:12eee(2)使用find自带的-exec参数结合rm命令删除bbb文件(删除确认)[root@zstest1tmp]#find./*-inum1442582-execrm-i{}\;rm:是否删除普通空文件“./bbb”?y[root@zstest1tmp]#ll-i总使用量01442583-rw-r--r--1rootroot09月2215:00ccc1442584-rw-r--r--1rootroot09月2215:00ddd1442585-rw-r--r--1rootroot09月2215:12eee(3)使用find自带的-exec参数结合rm命令删除ccc文件(不确认删除)[root@zstest1tmp]#find./*-inum1442583-execrm-f{}\;[root@zstest1tmp]#ll-iTotalusage01442584-rw-r--r--1rootroot09月2215:00ddd1442585-rw-r--1rootroot09月2215:12eee(4)使用find和xargs删除ddd文件(-i参数不能用于确认删除)[root@zstest1tmp]#find./*-inum1442584|xargsrm-f[root@zstest1tmp]#ll-itotalusage01442585-rw-r--r--1rootroot09月2215:12eee(5)使用rm命令删除指定文件(find命令找到的文件名)[root@zstest1tmp]#rm`find./*-inum1442574`rm:是否删除普通空文件“./eee”?y[root@zstest1tmp]#lltotalusage0#使用find命令的-inum选项确认文件名[root@zstest1tmp]#touchfff[root@zstest1tmp]#ll-itotalusage01442574-rw-r--r--1rootroot09月2215:38fff[root@zstest1tmp]#find./*-inum1442574./fff总结一下:以上几种不同的删除方式,一般来说都是使用find命令的-inum选项来确认通过指定文件的inode值来指定文件名,然后传给rm命令删除,呵呵呵呵如果本文对您有所帮助,我深感荣幸。另外,如果有时间,可以选择分享,让更多人受益,谢谢
