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

Bash如何删除包含指定文件且无额外文件的子目录

命令说明

核心逻辑是遍历parent下的一级子目录,校验目录内所有文件/文件夹名称是否仅包含file1、file2、file3三者,符合条件的目录即为待删除目标。

试运行(预览待删除目录)命令

执行后只会打印符合删除条件的目录路径,不会实际删除数据,建议先执行本命令核对结果无误后再执行删除命令:

find parent -mindepth 1 -maxdepth 1 -type d -exec sh -c '
for dir do
  # 提取目录内所有项的文件名
  items=("$dir"/*)
  items=("${items[@]##*/}")
  del_flag=true
  for item in "${items[@]}"; do
    # 只要存在不在允许列表内的项就标记为不删除
    [[ $item =~ ^(file1|file2|file3)$ ]] || { del_flag=false; break; }
  done
  $del_flag && echo "待删除目录:$dir"
done
' sh {} +

实际执行删除命令

核对预览结果无误后执行以下命令完成删除:

find parent -mindepth 1 -maxdepth 1 -type d -exec sh -c '
for dir do
  items=("$dir"/*)
  items=("${items[@]##*/}")
  del_flag=true
  for item in "${items[@]}"; do
    [[ $item =~ ^(file1|file2|file3)$ ]] || { del_flag=false; break; }
  done
  $del_flag && rm -rf "$dir"
done
' sh {} +

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:36:00