Linux rm 删除命令

当我们在Linux系统下,如果要删除某个特定的文件或者特定目录下的特定文件,那么首先会想到的是Linux系统的系统命令rm。 本文将会对rm删除文件命令的使用方法做详细的介绍,包括rm命令的命令格式,包含的命令选项,并且通过实例来介绍rm命令的不同选项。

Linux rm 命令介绍

rm 命令在英语里就是remove单词的缩写,就是删除的意思, 该命令主要用来删除linux文件系统下的文件。当使用rm命令的递归参数-rf的话,也可用来删除目录文件。
我们可以在命令行下通过rm命令来删除指定的每一个文件。 默认情况下,该命令不会删除目录文件。
Linux rm命令删除文件的处理过程只是删除文件所对应的inode链接,但并不会删除或者清空文件的存储数据,当删除完成后,系统会将该文件的存储空间标记为空闲状态,这样就别的程序就可以将数据写入这个空间里了。 也就是说,当你删除一个文件的时候,文件数据并没有被改变,只是不会再关联到这个文件名了。
因为文件数据本身并没有被销货,所以当rm命令将指向数据区域的指针删除掉后, 该数据就不能再被访问了, 而且也没法注销该删除操作。不像我们在windows系统里, 我们可以去回收站里将删除的文件恢复到以前的存储位置。
注意: 如果你想彻底的将文件数据从磁盘里删掉,我们可以通过使用Linux系统的shred命令将指定文件所在存储数据测试重新覆盖,这样数据就彻底无法再恢复了。

Linux rm 命令格式及参数

rm [参数] {文件名}

参数如下:

-f, –force 强制删除文件, 不做任何删除操作的提示
-I, –interactive  进行交互式的删除操作
-r, -R, –recursive 将对指定目录中的所有目录或子目录进行递归性的删除
-v, –verbose 显示删除操作的详细信息
–help 显示命令的使用帮助信息
-d, 删除空目录文件,rm –d 和rmdir命令的效果是一样的。

对于-I选项,当rm 命令在删除文件的时候,如果指定的文件超过3个话,rm 命令在删除文件前,会做出删除提示。

Linux rm命令删除目录文件

默认情况下,rm命令不会删除目录文件的。 但是如果使用了-r/-R/–recursive 选项的话, rm命令将会删除所有匹配到的文件或者目录。
如果指定的目录是个空目录,那么可以使用rm命令的-d/–dir 参数来删除。
如果需要删除当前目录下的空目录文件fio1,执行下面的命令:

#rm –d  fio1

命令输出如下:

root@devops:~/osetc# rm fio1/
rm: 无法删除'fio1/': 是一个目录
root@devops:~/osetc# rm -d fio1/
root@devops:~/osetc#

如果要删除目录下的所有普通文件或者子目录文件,并不做删除确认提示,可以使用rm命令的-rf选项做递归删除,执行下面命令:

#rm –rf  fio

Linux rm命令删除普通文件

如果要删除当前目录下的普通文件 fio.txt, 当要删除的文件是写保护的,系统会做出删除确认提示,执行下面的命令:

#rm fio.txt

命令输出如下

root@devops:~/osetc# ll
总用量 16
drwxr-xr-x 2 root root 4096 3月  17 22:01 ./
drwx------ 6 root root 4096 3月  15 21:48 ../
-rw-r--r-- 1 root root    5 3月  15 21:24 fio5.txt
-r--r--r-- 1 root root    5 3月  17 22:01 fio.txt
root@devops:~/osetc# rm fio.txt
root@devops:~/osetc#

Linux rm 命令强制删除文件

如果想在删除文件的时候,不想有任何确认提示,那么可以使用rm命令的-f选项,执行下面的命令:

#rm –f fio.txt

命令输出如下:

root@devops:~/osetc# ls
fio5.txt  fio.txt
root@devops:~/osetc# rm -f fio.txt
root@devops:~/osetc# ls
fio5.txt
root@devops:~/osetc#

Linux rm 命令结合通配符删除所有.txt 文件

如果想删除目录下所有的文件名以.txt 结尾的文件,那么可以使用Linux下通配符来匹配要删除的文件,然后结合rm命令进行删除。执行下面的命令:

# rm *.txt

命令输出如下:

root@devops:~/osetc# ls
fio1.txt  fio2.txt  fio3.txt
root@devops:~/osetc# rm *.txt
root@devops:~/osetc# ls
root@devops:~/osetc#

Linux rm 命令交互式删除文件

如果想在删除文件的时候,让系统做出删除文件的确认提示,这样可以做交互式的确认,当输入Y的时候,就进行文件删除,当输入N的时候,文件不会被删除。 可以使用linux rm 命令的-i选项,执行命令如下:

# rm –i fio5. Txt

命令输出如下:

root@devops:~/osetc# ls
fio5.txt
root@devops:~/osetc# rm -i fio5.txt
rm:是否删除普通文件 'fio5.txt'? y
root@devops:~/osetc# ls
root@devops:~/osetc#

Linux rm 命令删除文件时并排除特定的某个文件或某类文件

当我们在删除某类文件的时候,想排除特定的文件,此时如果简单的执行rm命令是无法完成的。 我们需要通过结合其它的Linux命令,比如grep命令来实现。 比如我们先删除目录下的除了fio.txt文件的所有.txt文件,那么可以执行下面的命令:

# rm `ls *.txt|grep –v fio.txt`

命令输出如下:

root@devops:~/osetc# ls
fio1.txt  fio2.txt  fio3.txt
root@devops:~/osetc# rm -i `ls *.txt| grep -v fio1.txt`
rm:是否删除普通文件 'fio2.txt'? y
rm:是否删除普通文件 'fio3.txt'? y
root@devops:~/osetc# ls
fio1.txt

Linux rm命令和unlink命令的不同之处

Linux里rm 命令 和unlink 命令主要功能都是用来删除指定的文件。 但是unlink命令只能同时删除一个文件,而且不能删除目录文件,并且该命令没有任何的附加选项。只是用来通过调用unlink函数来删除指定的一个文件。而在大多数版本的linux系统中的rm命令包含了我们上面介绍的参数,并可以做交互式操作,安全检查,条件删除以及递归操作等。

root@devops:~/osetc# unlink fio1.txt fio2.txt
unlink: 额外的操作数 "fio2.txt"
Try 'unlink --help' for more information.

99%的人还阅读了:

Leave a Reply