明日分享:我们在肉体的癌症方面花了不少钱,精神的虫害方面却没有花哪些,如今早已到了时侯,我们应当有不平凡的校区。--《瓦尔登湖》

序言

我们都晓得,在linux删掉一个文件可以使用rm命令,并且有一些特殊名称的文件使用普通的rm方法却无法删掉,本文介绍linux中删掉特殊名称文件的多种形式。

linux文件命名规则

在介绍之前,简单说明一下linux中文件命名规则。文件或目录名由除“/”和空字符“”之外的任意ASCII字符序列组成。其实好多操作系统容许更多类型的字符组成文件名。但对于我们来说,不建议使用一些特殊字符来命名文件。不幸的是,我们可能无意中创建了一些特殊名称的文件,或则由程序意外的创建了一些由特殊字符组成的文件,这个时侯,要删掉它们,虽然没有想像中的这么简单。

删掉时带上路径

假定有一个名为-static文件,我们使用普通方法将它删掉:

如何删除只读文件_linux文件读写删除权限_linux删除只读文件

$ rm -static
rm: invalid option -- 's'
Try 'rm ./-static' to remove the file '-static'.
Try 'rm --help' for more information.

十分可惜,这些方法提示出错,并不能成功地删掉-static文件。这是为何?我们晓得在linux中,一般以-开头,前面跟一些字符,作为一个命令的选项,而不巧的,-static就被rm命令觉得是一个参数选项,更不幸的是,实际上并没有该选项,因而最终提示invalidoption--‘s’linux学习论坛,致使-static文件难以删掉。

这么有没有哪些办法删掉呢?我们注意到linux删除只读文件,不仅提示非法选项外,还让我们尝试rm./-staticnode.js安装linux,是否可以呢?我们试一下:

$ rm ./-static
$

最终发觉,我们将-static文件成功删掉了。因而得到我们的第一种方法,删掉文件时带上路径。

删掉时使用--

后面不仅提示让我们使用rm./-static之外,还让我们使用rm--help获取更多信息,这么我们就看一下:

linux删除只读文件_如何删除只读文件_linux文件读写删除权限

$ rm --help
(省略部分内容)
To remove a file whose name starts with a '-', for example '-foo',
use one of these commands:
  rm -- -foo
  rm ./-foo
(省略部分内容)

内容较多,而且可以注意到里面的内容,对于以-开头的文件,提供了两种删掉方法linux删除只读文件,第二种是上面提及的,而第二种,是在删掉的文件后面再加--:

$ rm -- -static
$ 

我们发觉这些方法也是可以删掉以-开头的文件。

删掉时用冒号造成来

对于特殊字符,如!*等组成的文件怎么删掉呢?诸如:

$ rm !*
rm: missing operand
Try 'rm --help' for more information.

如何删除只读文件_linux删除只读文件_linux文件读写删除权限

对于这种类型的文件,我们须要用冒号将文件名包含上去:

$ rm "!*"
$ 

这样就可以删掉掉了,并且这些方法并不能针对所有该类型的文件,比如,文件名为!*的文件就不能通过这样的方法删掉,由于!*是有其他含意的,具体可参看《》

降低通配符字符删掉文件

既然!*未能通过加破折号的形式删掉,那还有哪些办法吗?有!删掉时,降低通配符字符:

$ rm !*
$

这样便可以删掉。在linux中,好多字符有着特殊的含意,因而当你须要把它当普通字符使用时,就须要在上面加上通配符字符,这和C语言中的通配符有点类似。再举个反例,要删掉以空格开头的abc文件,可以使用下边的形式:

$ rm  abc
$

即可成功删掉。

根据i节点号删掉

如何删除只读文件_linux删除只读文件_linux文件读写删除权限

好多时侯,文件名压根无法输入,由于它们都是一堆乱码。因而也完全没法通过上面介绍的方式进行删掉,那还有办法吗?有!通过查找文件的i节点,根据i节点进行删掉。

比如:

$ ls -i #找到乱码文件的i节点号
1703907 ç¼?ç¨?ç? ç??é«?æ¸?pdfç??.pdf 
$ find ./ -inum 1703907 -exec rm {} ; #或者使用-delete参数

关于find命令用法,可参考《》。这些通过i节点号进行删掉的方法适用于上面所提及的任何类型文件。

这儿扩充说几句。在操作系统中,它是怎样辨识一个文件的呢?它并不是通过文件名,而是通过一个iNode号,即i节点号来辨识不同的文件,文件名不过是这个文件其中的一个属性而已。

使用转义删掉

不多解释:

$ rm *.pdf

linux文件读写删除权限_如何删除只读文件_linux删除只读文件

然而这些方法可能存在删掉,由于只要文件名结尾为.pdf都会被删掉,因而依据实际情况谨慎使用。

总结

删掉特殊文件名称的方式有好多,总结如下:

不同类型文件可选择使用前面所提较便捷的方法进行删掉。

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复