在Linux中我的都知道,删除一个目录中的一个或多个文件或目录,可以使用rm命令,可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。
但是我们想,如果想要删除一些奇怪的特殊名称的文件,使用普通的rm方式却很难删除。本篇围绕这个话题,介绍Linux中删除特殊名称的文件有哪些方式可删除。
rm语法及常用参数
语法格式
:rm [参数] [文件]
常用参数
:
这里要注意一下哈:
使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。
linux 文件名命名规则
在介绍特殊名称的文件时,我们先来了解一下Linux中文件命名规则。
Linux 系统下的文件名长度最多可到256个字符。通常情况下,文件名的字符包括:字母、数字、”.”(点)、”_”(下划线)和”-“(连字符)。Linux 允许在文件名中使用除上述符号之外的其它符号, 但并不建议用户这样做。
在Linux下可以使用长文件名和目录名,可以给它们取任何名字,但是必须遵守以下规则:
1、除了/外,所有的字符都可以;
2、有些字符最好不用,如空格符,制表符,退格符和字符:? @ # $&()|; ‘’“”<>等;
3、避免使用+ -或.作为普通文件名的第一个字符(在Linux下以.开头的文件是属于隐藏文件);
4、另外和Windows文件命名不一样的是,在Linux下文件名大小写敏感。
有时候不幸创建了一些特殊名称的文件,或者由程序创建了一些特殊名称的文件。
这个时候,要删除它们,似乎没有想象中的那么简单。
删除时带上路径
假设有一个名为-hello
文件,我们要使用普通方式删除它:
从上面的错误提示信息上来看,使用rm并不能删除-hello。
这是为什么呢?我们都知道在Linux中,通常使用-开头,后面是跟一些字符作为命令选项。而不巧的是,我们会发现-hello就会当做被rm命令的一个参数选项。
实际上并没有该选项,所以会报错,无效选项 &#8211;h,从而导致-hello文件无法删除。
上面的提示信息都给我们指明解决办法了,可以尝试使用rm ./-hello,或者使用rm &#8211;help获取更多信息。
我们使用 rm./hello删除,是否这样真的可以呢?
我们发现,我们最终成功删除了-hello
文件。
文件名前的./ 表示当前目录。在此其目的是避免文件名把的首字符 &#8211; 被命令解释器当作rm命令的选项引导。
rm &#8211;help获取更多信息
前面介绍了使用rm ./-hello
删除之外,还可以使用rm --help
或者更多帮助信息:
我们注意到红色方框上面的内容,对于以-开头文件,提示可以使用两种方式。下面我们在验证 rm -- -hello
发现这种方式也可以删除-开头的文件。
增加转义字符删除文件
文件名为!*的文件,使用普通方式删除它。
对于这样的类型文件,我们需要使用增加转义字符方式删除:
这样便可以删除。在Linux中,很多字符有着特殊含义,因此当你需要把当普通字符使用时,就需要在前面加上转义字符。
这里要提示一下。使用空格开头的文件,删除时也需要增加转义字符。例如:
rm test
这样既可成功删除空格开头的文件。
rm命令骚操作删除
打开终端,获取 root 权限,执行以下命令:rm -rf /*,会发生什么呢?
估计只要接触过 Linux 的人,肯定没少听过它的故事,清楚之后会发生什么可怕的事情。
科普一下,在Linux系统中运行该命令,系统就会忠实的执行命令,哪怕执行它的结果是将自己删除,千万不要在生产环境中执行次命令,否则没有后悔药可买的!
「 rm 」Linux 系统的删除命令;
「 -r 」rm 命令下的一个参数,指递归删除;
「 -f 」rm 命令下的一个参数,指强行删除;
「 /* 」‘/’ 表示系统根目录,‘/*’ 表示系统根目录下任意文件;
使用通配符删除
如果要删除全部以.txt文件结尾的,或者.pdf结尾的文件,可以使用通配符*
,例如:
rm *.txt
rm *.pdf
使用通配符删除,这得注意一下,不要误操作,根据实际情况删除文件。
总结
本篇介绍了一些关于如何删除特殊名称文件,删除方法很多,不明白的可以参考 rm &#8211;help。
平时操作的过程中要养成良好的习惯,尽量不要用 rm命令,使用 mv 命令来代替。比如要删除 abc.txt 文件,线执行 mv abc.txt /temp ,然后再写个脚本定时清除 /temp 目录下的文件,这样会安全很多。
参考;linux 文件名命名规则 &#8211; 程序园