rm (remove),是一个基本的 UNIX 命令,在 Linux 系统中是一个非常重要的命令,用于删除文件或目录。同时这也是一个应谨慎使用的命令,错误的使用此命令可能会删除重要的文件和数据。要使用 rm 删除文件,用户不需要具有读取/写入权限,但是必须有该文件上级目录的写入权限。在 Linux 中删除文件或目录不像 Windows 那样简单,因为一旦删除文件,它不会进入回收站而是完全删除,之后要想恢复非常困难的。
下面就详细介绍下 rm
命令以及在删除文件或目录时应该如何选择合适的参数。
rm 命令语法
默认情况下,rm
命令无需确认即可删除文件。一旦删除文件,文件或目录的内容将无法恢复。出于这个原因,在使用该命令时要格外小心,以避免出现不可挽回的损失。别问我怎么知道的
rm 命令的一般语法为:
rm [OPTION] [FILENAME]...
rm 命令参数
命令参数 | 描述 |
---|---|
-f, –force | 在没有确认删除提示的下删除文件并忽略不存在的文件和参数 |
-i | 删除文件前提示确认 |
-I | 在删除三个以上的文件或递归删除文件之前提示确认,与 -i 选项相比,侵入性较小,同时提供防止频繁错误的保护。 |
-interactive [=WHEN] | 根据指定的 WHEN 进行确认提示:never,once (-I),always (-i),如果此参数不加 WHEN 则总是提示 |
–one-file-system | 递归删除一个层级时,跳过所有不符合命令行参数的文件系统上的文件 |
–no-preserve-root | 不对根目录 ‘/’ 进行任何特殊处理 |
–preserve-root [=all] | 不对根目录 ‘/’ 进行递归操作(默认启用) |
-r, -R, -recursive | 以递归方式删除目录及其内容 |
-d, –dir | 不使用 -r/-R/-recursive 删除空目录,rm -dir 等同于 rmdir |
-v, –verbose | 显示正在进行的步骤 |
–help | 显示可用的命令选项 |
–version | 输出 rm 命令的版本信息 |
可以输入 rm --help
查看所有帮助信息:

删除一个文件
要删除一个文件,直接在 rm
后面加上你要删除的文件名:
rm filename
执行后会发生了下面两种情况中的一个:
- 如果你没有父目录的权限,将会输出 “Operation not permitted” 错误;
- 如果没有写入保护,文件将被直接删除并且没有提示。
强制删除文件
使用 -f
参数允许用户无需确认即可删除写保护的文件:
rm -f filename
注意:-f
参数不适用于写保护的目录。
删除多个文件
要删除多个文件,直接在 rm
后面加上你要删除的所有的文件名,用空格隔开即可:
rm atp1.txt atp2.txt atp3.txt
还可以使用 ‘*’ 任意匹配,例如用上面的命令可以写为:
rm atp*.txt

同样的,如果要删除该目录下所有 .txt
文件:
rm *.txt
删除目录
rm
命令可用于删除目录,但是我们使用两种不同的方法来删除空目录和非空目录。
删除空目录
要删除空目录,可以使用 -d
参数(等同于 rmdir
命令):
rm -d dirname
删除非空目录
要删除非空目录及其内容,需要使用 -r
参数:
rm -r dirname
删除文件前确认提示
-i
参数用于在删除文件之前要求确认。此时需要按下 y
键确认或者 n
键取消:
rm -i filename
删除多个文件或目录时, -i
参数可以派上用场,在删除每个文件之前提示确认,例如:
rm -i atp*.txt

如果删除三个以上的文件,只想要提示一次,可以使用 -I
参数,将只会确认被删除的文件数,例如:
rm -I atp1.txt atp2.txt atp3.txt atp4.txt

输出删除过程/结果
rm 命令通常以静默方式删除文件,如果你想知道每个文件删除的过程,可以使用 -v
参数,例如:
rm -v atp1.txt atp2.txt atp3.txt

删除的文件名中包含特殊字符
文件名包含空格
删除包含空格的文件时,有两种方式:
- 将文件名用引号括起来:
rm -i 'filename with spaces'
- 使用反斜杠转义每个空格:
rm -i filename\ with\ spaces
文件名以破折号开头
因为 rm
会将 ‘-’ 识别为一个参数,所以删除以破折号开头的文件时需要注意一下,有两种方法:
有两种方法可以做到这一点:
- 前面加上双破折号:
rm -- -filename
- 加上文件的路径:
rm /home/-filename
注意:不推荐创建文件/目录的名称中包含特殊字符或空格。
如果你认为这篇文章还不错,可以考虑为我充电 ⚡️