命令简介

rm 命令是 Linux 系统中用于删除文件或目录的基本命令。它可以删除一个或多个文件/目录,并提供了各种选项来控制删除行为。作为一个非常常用的命令,rm 在日常操作和脚本编写中都有着广泛的应用。但由于删除操作是不可逆的,因此在使用 rm 命令时一定要非常小心谨慎。

命令格式

1
rm [选项] 文件或目录

参数说明

参数 描述 备注
-d 删除空目录
-f 强制删除,不显示任何提示 非常危险,谨慎使用
-i 每次删除前进行确认 比较安全的做法
-r, -R 递归删除目录及子目录 配合 -f 非常危险
-v 删除时显示详细信息
–help 显示帮助信息

命令实例

基本用法

1.删除单个文件

1
rm file.txt

2.删除多个文件

1
rm file1.txt file2.txt file3.txt

3.强制删除文件

1
rm -f file.txt

不再提示,直接删除文件,非常危险。

4.交互式删除

1
rm -i file.txt

每次删除前都会提示,比较安全。

5.删除目录

1
rm -r directory

7.删除目录并显示详细信息

1
rm -rv directory

8.删除包含空格的文件名

1
rm "file with spaces.txt"

扩展用法

1.删除特殊文件

1
rm -f /dev/null

2.删除指定日期之前的所有文件

1
find . -mtime +7 -exec rm {} \;

3.删除指定大小的文件

1
find . -size +100M -exec rm {} \;

高级用法

1.反向删除

1
2
3
4
5
6
leazhi@leazhi-ubuntu2310:~/Templates$ ls
passwd project

leazhi@leazhi-ubuntu2310:~/Templates$ rm -rf !(project)
leazhi@leazhi-ubuntu2310:~/Templates$ ls
project

2.删除所有 .log 文件

1
rm **/*.log

该命令会删除当前目录及子目录下的所有 .log 文件。

3.删除过程中的异常处理

1
2
3
4
5
6
7
8
9
10
#!/bin/bash

rm -rv dir1 dir2 2> /tmp/rm_errors.log

if [ -s /tmp/rm_errors.log ]
then
echo "一些文件无法删除,错误日志见 /tmp/rm_errors.log"
else
echo "所有目标文件/目录已成功删除"
fi

上面的脚本在删除过程中将所有异常信息重定向到一个日志文件中,方便后续分析处理。

4.安全删除大目录

删除大目录时,为了避免一次性占用大量内存导致系统卡顿,可以分批进行。

1
2
3
4
5
#!/bin/bash

target_dir=$1

find $target_dir -depth -print0 | xargs -0 rm -rv

这种方式会先使用 find 命令列出所有要删除的文件和目录,然后分批调用 rm 命令进行删除,可以有效避免内存占用过高的问题。

总的来说,rm 命令虽然非常简单,但在实际使用中却有很多技巧和注意事项需要掌握。正确、安全地使用它,可以避免发生不必要的误删除等严重后果。作为一名 Linux 运维工程师,对 rm 命令一定要熟练掌握并谨慎使用。如有任何其他疑问,欢迎随时询问。