You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用rm命令删除文件夹内除指定文件夹外内容失败求助

可行解决方案

方法1:使用find命令(兼容性强,推荐)

这是最稳妥的方式,能精准匹配要删除的目录,避免误操作。执行前建议先去掉删除部分,确认匹配的目录是否正确:

# 先查看要删除的目录列表(确认无误再执行删除)
find . -maxdepth 1 -type d ! -name "." ! -name "2" ! -name "3"
# 确认后执行删除
find . -maxdepth 1 -type d ! -name "." ! -name "2" ! -name "3" -exec rm -rf {} +

参数说明:

  • -maxdepth 1:只处理当前目录下的子目录,不递归深入子目录内部
  • -type d:仅匹配目录
  • ! -name "X":排除名为X的目录
  • -exec rm -rf {} +:批量将匹配到的目录传给rm -rf删除,比逐个删除高效

方法2:Bash扩展glob模式

如果用的是Bash shell,先开启扩展glob功能,再用匹配语法删除:

# 开启扩展glob(仅当前会话有效)
shopt -s extglob
# 先查看匹配项(确认)
echo !(2|3)
# 仅删除目录(加斜杠只匹配目录)
rm -rf !(2|3)/

如果担心误删文件,也可以用循环判断后删除:

shopt -s extglob
for item in !(2|3); do
    if [ -d "$item" ]; then
        rm -rf "$item"
    fi
done

方法3:ls+grep+xargs组合(应急用,不推荐含特殊字符的目录)

如果目录名没有空格、特殊字符,可以用这个快速写法:

# 先查看要删除的目录
ls -d */ | grep -vE '(2|3)/'
# 确认后删除
ls -d */ | grep -vE '(2|3)/' | xargs rm -rf

重要提醒

所有删除命令执行前,一定要先运行不带rm -rf的测试命令,确认匹配的是你要删除的目录,避免误删重要数据。

内容的提问来源于stack exchange,提问作者SAURABH PANDEY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 23:55:20