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

Python3查找含重复文件的文件夹并删除冗余 保留文件最多的目录

文件夹维度去重逻辑实现方案

前置准备:构建文件夹维度的特征数据集

你目前已经有了全量文件的哈希-路径映射,首先反过来推导每个文件夹包含的所有文件哈希集合:

  • 遍历所有file_key(即文件哈希),遍历每个哈希对应的path列表
  • 对每个文件的完整路径,提取其父文件夹路径(可通过os.path.dirname(file_path)实现)
  • 维护一个全局字典dir_hash_map,key为文件夹路径,value为该文件夹下所有文件的哈希集合
  • 可选优化:如果需要支持嵌套文件夹维度的去重,可递归向上汇总父级文件夹的哈希集合(即父文件夹的哈希集合为所有子文件夹哈希集合的并集)
  • 该阶段可直接过滤黑名单路径,标记白名单路径为强制保留路径,不进入后续删除候选池

核心判断逻辑实现

步骤1:候选文件夹排序

将所有待判断的候选文件夹,按「文件夹内文件数量」降序排序,文件数量相同的按路径字典序排序即可,优先保留文件更多的文件夹。

步骤2:冗余文件夹判定

遍历排序后的候选文件夹,对每个未被标记为待删除/保留的文件夹,执行以下逻辑:

  1. 拿当前文件夹的哈希集合current_set,和后续所有未被标记的文件夹的哈希集合target_set比对:
    • 如果target_set.issubset(current_set)且len(target_set) < len(current_set):target_set对应的文件夹是当前文件夹的真子集,标记为待删除
    • 如果target_set == current_set:两个文件夹内容完全一致,属于特殊场景1,加入警告列表,不自动标记删除
    • 如果current_set.intersection(target_set)非空,且互相都不是对方的子集:属于特殊场景2,两个文件夹各有独有文件,加入警告列表
  2. 已经被标记为待删除的文件夹,无需再参与后续的比对逻辑,减少不必要的计算

优化建议

  • 可提前为每个文件夹生成总特征值:将文件夹内所有文件哈希排序后拼接,再计算一次哈希作为文件夹的唯一特征,内容完全一致的文件夹特征值完全相同,判断相等时直接比对特征值即可,无需每次比对集合,性能提升明显
  • 可按文件数量对文件夹分组,仅相同文件数量的文件夹需要判断是否完全相等,仅文件数量更小的文件夹才可能是大文件夹的子集,可减少90%以上的无效比对

结果输出

  • 待删除文件夹列表:直接生成可执行的删除脚本(shell/bat/Python脚本均可),可在脚本中增加二次确认逻辑,避免误删
  • 警告列表:按组输出需要人工核验的文件夹,每组标注每个文件夹的路径、文件数量、独有文件数量(即两个集合差集的长度),降低用户核验成本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:27:00