Linux下删除特殊名称文件方法
前提:虽然Linux规定文件或目录名由除“/”和空字符“\0”之外的任意ASCII字符序列组成,但是,不幸的是,我们可能无意中创建了一些特殊名称的文件,或者由程序意外的创建了一些由特殊字符组成的文件,这个时候,要删除它们,用常规的rm / rmdir就不可以了。
PS:最好用的方法放到最后噢~
第一种方法
:删除时使用 --
这种方法可以删除以 ‘-’ 开头的文件
使用示例:
[zanda@Desktop]$ rm -- -filename # 删除成功
第二种方法
:删除时带上文件路径
使用示例:
[zanda@Desktop]$ rm -filename # rm: invlid option --'f'
[zanda@Desktop]$ rm ./-filename # 删除成功
第三种方法
:将特殊符号进行转义
使用示例:
[zanda@Desktop]$ rm !* //删除失败
[zanda@Desktop]$ rm \!* //删除成功
第四种方法
:删除时带上用双引号包括要删除的文件
可以用于对于特殊字符,如<>!*等组成的文件
使用示例:
[zanda@Desktop]$ rm <>\!*(@$) # 删除失败
[zanda@Desktop]$ rm "<>\!*(@$)" # 删除成功
第五种方法(通用)
当文件名由很长的乱码组成的时候,上面的方法就不太好用了,这时候,这个方法就可以大显身手了
:按照i节点号删除
使用示例:
[he@Desktop]$ ls -i # 先查看要删除文件的i节点号
17881877 ??é«?æ¸?pdfç??.log
[he@Desktop]$ find ./-inum 17881877 -exec rm {} \; #根据i节点号删除对应文件
注:操作系统并不是通过文件名来识别一个文件,而是通过系统分配的iNode号来识别不同的文件。