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

如何删除无对应同名txt标注文件的图片?

可行实现方案

以下三种方案覆盖不同使用场景,操作前建议先备份部分文件测试逻辑,避免误删。

方案1:Windows 批处理(无需额外安装软件)

直接在目标文件夹下新建文本文档,复制下方代码后保存为 .bat 后缀的文件,双击运行即可:

@echo off
setlocal enabledelayedexpansion
:: 可自行在括号内补充需要识别的图片后缀
for %%f in (*.jpg,*.jpeg,*.png,*.bmp,*.gif,*.webp) do (
    :: 先把下方del改成echo,运行预览待删除文件确认无误后再改回del
    if not exist "%%~nf.txt" del "%%f"
)
echo 清理完成
pause

方案2:Linux / macOS 终端命令

直接在目标文件夹路径下打开终端,先执行预览命令确认待删除文件:

# 预览待删除图片,可自行补充大括号内的图片后缀
for img in *.{jpg,jpeg,png,bmp,gif,webp}; do [ ! -f "${img%.*}.txt" ] && echo "$img"; done

确认删除列表无误后,执行实际删除命令:

for img in *.{jpg,jpeg,png,bmp,gif,webp}; do [ ! -f "${img%.*}.txt" ] && rm -f "$img"; done

方案3:Python 脚本(跨平台、可定制性高)

适合需要递归处理子文件夹、自定义过滤逻辑的场景,代码如下:

import os

# 配置项
target_dir = "./"  # 替换为你的图片文件夹路径,./代表脚本当前所在路径
image_exts = [".jpg", ".jpeg", ".png", ".bmp", ".gif", ".webp"]
dry_run = True  # 先设为True预览删除列表,确认无误后改成False执行删除

for filename in os.listdir(target_dir):
    name, ext = os.path.splitext(filename)
    if ext.lower() in image_exts:
        txt_path = os.path.join(target_dir, f"{name}.txt")
        if not os.path.exists(txt_path):
            img_path = os.path.join(target_dir, filename)
            if dry_run:
                print(f"待删除:{img_path}")
            else:
                os.remove(img_path)
                print(f"已删除:{img_path}")

print("处理完成")

如果需要递归处理子文件夹,把os.listdir替换为os.walk即可。

注意:所有方法首次运行时都建议先开启预览模式,确认删除列表和逻辑正确后再执行实际删除操作,避免数据丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 17:06:03