命令简介

rmdir 是 Linux 系统中用于删除空目录的命令。与 rm -r 命令不同,rmdir 只能删除空目录,如果目录下还有文件或子目录存在,它将无法删除。这样的设计使得 rmdir 更加安全可靠,避免了意外删除重要数据的风险。在日常运维工作中,rmdir 命令被广泛应用于清理和维护目录结构。

命令格式

1
rmdir [选项] 目录名

参数说明

参数 描述 备注
-p 递归删除父目录 如果子目录被删后使父目录成为空目录,则一并删除
-v 显示指令执行过程 verbose 模式,在删除每个目录时显示信息
–ignore-fail-on-non-empty 当目录非空时,忽略错误继续执行 默认情况下非空目录会报错退出

命令实例

基本用法

1.删除单个空目录

1
rmdir empty_dir

2.删除多个空目录

1
rmdir dir1 dir2 dir3

3.递归删除空目录树

1
rmdir -p path/to/empty_dir

如果 path/to 目录下没有其他内容,则一并删除。

4.忽略非空目录错误

1
rmdir --ignore-fail-on-non-empty * 

删除当前目录下的所有空目录,忽略那些非空目录的错误。

5.显示详细执行过程

1
rmdir -v verbose_dir

高级用法

1.结合 find 使用

可以结合 find 命令查找并删除空目录。

1
2
3
#!/bin/bash

find . -type d -empty -print -delete

该脚本会递归查找当前目录下的所有空目录,并将它们全部删除。

2.删除前确认

为了避免意外删除重要目录,可以增加确认逻辑。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash

for dir in "$@"
do
if [ -d "$dir" ] && [ -z "$(ls -A "$dir")" ]
then
read -p "确定要删除空目录 $dir 吗? [y/n] " confirm
if [ "$confirm" == "y" ]
then
rmdir "$dir"
fi
else
echo "$dir 不是空目录,跳过删除"
fi
done

这个脚本会先检查目录是否为空,如果是则提示用户确认后再执行删除。

总之,rmdir 命令虽然功能比较单一,但却提供了一种更加安全可靠的方式来删除空目录。通过这个命令,我们可以有效避免意外删除重要数据的风险。对于运维工作来说,正确使用 rmdir 命令是非常重要的。如有任何其他疑问,欢迎随时询问。