RELATEED CONSULTING
相关咨询
欢迎选择下列在线客服咨询
微信客服
微信客服二维码
热线电话:13863516421
7x24小时,全年无休
我们服务器的承诺:
关闭右侧工具栏

境外国外服务器专题

如何使用通配符在rm命令中删除多个目录?

  • 来源:本站
  • 编辑: 超级管理员
  • 时间:2025-07-21 17:36:25
  • 阅读0次

使用通配符配合 rm 命令删除多个目录时,核心是通过通配符匹配目录名,并结合 rm -r(递归删除目录)参数实现批量操作。以下是具体方法、示例及注意事项:

一、核心命令格式

删除目录必须使用 -r(递归删除目录内所有内容),结合通配符的基本格式:


bash

rm -r [通配符匹配的目录名]


若需删除前确认(避免误删),可添加 -i(逐个确认)或 -I(批量确认):


bash

# 逐个确认删除匹配的目录

rm -ir [通配符]


# 批量确认(删除超过3个目录时提示一次)

rm -Ir [通配符]

二、常用通配符删除目录示例

假设当前目录有以下目录:log_2023、log_2024、tmp_1、tmp_2、data_backup、image_backup。

1. 用 * 匹配前缀 / 后缀相同的目录

删除所有以 log_ 开头的目录:

bash

rm -r log_*


删除所有以 _backup 结尾的目录:

bash

rm -r *_backup


删除名称包含 tmp 的目录(如 tmp_1、tmp_2):

bash

rm -r *tmp*


2. 用 [] 匹配指定范围的目录

删除 tmp_1、tmp_2、tmp_3(数字 1-3):

bash

rm -r tmp_[1-3]


删除 dir_a、dir_b、dir_c(字母 a-c):

bash

rm -r dir_[a-c]


3. 用 ? 匹配固定长度的目录

删除名称为 testX(X 为单个字符,如 test1、testA)的目录:

bash

rm -r test?


三、安全操作:删除前确认

目录删除后果更严重(会删除目录内所有文件和子目录),务必添加确认参数:


bash

# 逐个确认每个目录的删除(包括目录内的文件)

rm -ir log_*

# 提示:rm: remove directory ‘log_2023’? (输入y确认)


# 批量删除多个目录,仅提示一次确认

rm -Ir tmp_*

# 若匹配到5个目录,提示:rm: remove 5 arguments? (输入y确认)

四、注意事项

先查看匹配结果,再删除

通配符可能匹配到意想不到的目录,建议先执行 ls -d [通配符] 查看匹配的目录列表,确认无误后再删除:

bash

# 查看所有以tmp_开头的目录

ls -d tmp_*

# 确认后再删除

rm -r tmp_*


避免误删当前目录或上级目录

通配符 * 若使用不当,可能匹配到 .(当前目录)或 ..(上级目录),例如 rm -r * 会删除当前目录下所有内容(包括子目录),极其危险!

解决办法:删除前用 ls -d [通配符] 检查,确保不包含 . 或 ..。

目录名含特殊字符的处理

若目录名包含空格、*、? 等,需用引号包裹(如 rm -r "dir with space"),否则通配符可能失效。

递归删除子目录中的目录

若需删除子目录中符合条件的目录(非当前目录的同级目录),需用 find 命令配合,例如:

bash

# 递归删除所有子目录中以tmp_开头的目录(并确认)

find . -type d -name "tmp_*" -exec rm -ir {} \;

总结

用通配符删除多个目录的关键是:rm -r + 通配符匹配目录名,并通过 ls -d 预先检查匹配结果,结合 -i/-I 确认删除,最大限度避免误删重要目录。


我们提供7X24小时售后服务,了解更多机房产品和服务,敬请联系
购买咨询 售后服务