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

如何检查多个文件夹并删除文件名未在全部文件夹中匹配的文件?

多相机目录共有文件筛选方案

操作前置提醒

所有操作前请先完整备份三个相机目录的原始文件,避免误删导致数据丢失


方案1:Python脚本(推荐,适配12000文件量级无性能压力)

脚本逻辑:自动提取三个目录下所有tif文件名,计算三者的交集,仅保留所有目录共有的文件,非共有文件将被删除。你可以先测试打印待删除文件列表,确认无误后再执行真实删除操作。

import os

# 请修改为你实际的三个相机文件夹绝对/相对路径
camera_dirs = [
    "./Camera1",
    "./Camera2",
    "./Camera3"
]

# 收集每个目录下的所有tif文件名存入集合
file_sets = []
for dir_path in camera_dirs:
    tif_files = set()
    for file_name in os.listdir(dir_path):
        file_full_path = os.path.join(dir_path, file_name)
        if os.path.isfile(file_full_path) and file_name.endswith(".tif"):
            tif_files.add(file_name)
    file_sets.append(tif_files)

# 计算三个目录的共有文件名
common_files = set.intersection(*file_sets)
print(f"识别到共有文件数量:{len(common_files)},前5个示例:{list(common_files)[:5]}")

# 遍历每个目录删除非共有文件
for dir_path in camera_dirs:
    for file_name in os.listdir(dir_path):
        file_full_path = os.path.join(dir_path, file_name)
        if os.path.isfile(file_full_path) and file_name.endswith(".tif") and file_name not in common_files:
            # 测试阶段先注释下方os.remove行,仅打印待删除文件,确认无误后再取消注释执行删除
            print(f"待删除:{file_full_path}")
            # os.remove(file_full_path)

如果你需要分两次比对(先比Camera1和Camera2,再用结果比Camera3),仅需调整交集计算逻辑即可,本质和上述逻辑完全一致。


方案2:命令行工具(适合Linux/macOS环境,无需写代码)

  • 第一步提取三个目录的tif文件名存入临时文件:
    ls ./Camera1/*.tif | xargs basename > c1.txt
    ls ./Camera2/*.tif | xargs basename > c2.txt
    ls ./Camera3/*.tif | xargs basename > c3.txt
  • 第二步计算三个文件的交集得到共有文件名清单:
    comm -12 <(comm -12 <(sort c1.txt) <(sort c2.txt)) <(sort c3.txt) > common.txt
  • 第三步遍历每个目录,删除不在common.txt中的tif文件即可。

Windows用户也可以通过PowerShell实现类似逻辑,复杂度高于Python脚本,更推荐直接用方案1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:36:01