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

Bash如何删除指定目录下除任意嵌套的目标文件夹外的所有目录

Bash 保留嵌套目录删除其他文件夹解决方案

核心问题根源:原有命令会直接删除待保留目录的上级父目录,导致嵌套层级的目标目录被连带删除,解决方案需要同时保留目标目录及它的所有上级父目录。

方案:find 命令实现(全嵌套层级兼容)

操作步骤

  1. 先定义你需要保留的目录完整路径,示例中要保留./release/feature/footer的写法:
    KEEP_PATH="./release/feature/footer"
  2. 先执行预览命令确认待删除的目录列表,避免误删:
find ./release -type d -depth -print0 | grep -vzE "^$(echo $KEEP_PATH | sed 's/\//\\\//g')(/|$)" | xargs -0 echo "待删除目录:"
  1. 确认列表无误后,执行正式删除命令:
find ./release -type d -depth -print0 | grep -vzE "^$(echo $KEEP_PATH | sed 's/\//\\\//g')(/|$)" | xargs -0 rm -rf

命令说明

  • -depth参数:让find从最深层的子目录开始遍历,优先删除子目录再处理父目录,避免父目录提前被删导致子目录遍历异常
  • -print0 + xargs -0:适配路径中包含空格、特殊字符的场景,不会出现路径截断错误
  • grep 过滤规则:自动排除目标目录本身、目标目录的所有上级父目录、目标目录内部的所有子目录,确保这些路径不会被删除

多目录保留适配

如果需要同时保留多个目录,只需要修改KEEP_PATH的赋值,用|分隔多个路径即可,示例同时保留test-folder2和feature/footer:
KEEP_PATH="./release/feature/footer|./release/test-folder2"


内容的提问来源于stack exchange,提问作者Constantin.FF

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:00:00