让 AI 批量改文件名:先预览清单再执行
让 AI 整理一批文件名,可以先让它改一份 CSV。清单里把原名和新名并排放着,先看有没有改错对象、漏掉扩展名或撞名,再决定执行。
附件是一套 Python 标准库工具:列出文件名、检查清单、预览,以及明确开启后的改名。模型只负责给建议,脚本不调用模型,也不会判断新名字是否符合文件内容。
先用三个固定文件走一遍
需要 Python 3.10+。本次在 Linux、Python 3.12.14 下实际运行;执行改名还要求所在文件系统支持硬链接,其他系统没有在本次验证。
解压附件,在工具目录运行:
python make_demo.py demo-files
python rename_plan.py demo-files --list --output names.csv 第一条命令只创建尚不存在的新目录,里面是三个演示文本文件。第二条把目录第一层的普通文件列进 names.csv;子目录和符号链接会跳过。清单放在待改名目录之外,已有输出文件也不会覆盖。
names.csv 的两列是 source,target,起初两列相同,相当于“保持原名”。给 AI 时可以连同下面这段要求一起发送,只改目标列:
请按下面的命名规则修改附件CSV,只输出CSV,不输出命令或代码围栏。
两列表头保持source,target,source逐字保留,不能增加、删除或合并记录。
只改target中的文件名,不加目录。保持原扩展名,不根据文件名猜测文件内容。
规则:笔记 A.txt改为01-笔记-A.txt;draft,2.txt改为02-draft-2.txt;keep.txt保持原名。
含逗号的字段用标准CSV双引号包住。新名不能重复,不能占用目录里已有的其他名字。
规则不清或无法满足时先说明冲突,不编造原文件名。 换成自己的文件时,先保留原件,用少量副本放进单独目录试,再替换目录和命名规则。模型回复中的原名仍要与导出的清单逐项核对;脚本能检查源是否存在,却不知道你原本想给哪份材料取什么名字。
包内的 fixture-plan.csv 是手工写好的演示清单,没有调用模型:
source,target
笔记 A.txt,01-笔记-A.txt
"draft,2.txt",02-draft-2.txt
keep.txt,keep.txt 先预览,确认后再执行
python rename_plan.py demo-files fixture-plan.csv 默认只打印计划,文件名不变。输出的 mode 是 plan,前两项的 action 是 rename,最后一项是 noop;renamed: 0 表示这次没有执行改名。每项还带原文件的 SHA-256,便于后面核对字节。
逐行确认后,才运行:
python rename_plan.py demo-files fixture-plan.csv --apply --report apply-report.jsonl 成功时 mode 为 apply、renamed 为2、noop 为1。目录里的两个名字变了,keep.txt 保持不动,文件字节不变。apply-report.jsonl 记录计划和各项结果,必须是目录外的新路径。
工具会先检查整份清单。源不存在、源是符号链接或目录、名字含路径、源或目标重复,以及目标已被占用,都会报错并非零退出,预检失败不会开始改名。它还要求最后一个后缀逐字不变,例如 .txt 不能变成 .csv。大小写折叠后的名字冲突也会拒绝;只改变大小写、交换两个现有名字,都不在这版支持范围内。文件名首尾空白、控制字符等输入也会拒绝,工具不会偷偷替你清洗成另一个名字。
执行时用“先创建新名字的硬链接,再校验并移除旧名字”的方式,目标已被占用时创建会失败,不采用可能覆盖已有文件的普通改名调用。它要求你独占这份工作目录,运行期间不要编辑文件,也不要让同步程序同时处理它。
这不是整批事务。权限、文件系统或运行中变化导致失败时,前几项可能已经完成,也可能有一个文件同时留下新旧两个名字。此时先停下,保留目录副本,再对照报告、实际名称和 SHA-256 核对;不要直接重跑原清单,也不要凭名字删掉其中一份。报告帮助核对,并不提供自动回滚或断电恢复。
下载改名工具、完整提示词、固定样例、真实输出图和验证记录(ZIP,9个文件)
本地实际跑过24项检查,覆盖中文和逗号文件名、预览不改动、正常执行后的哈希一致、重名与路径拒绝,以及显式执行时整份预检失败不改任何文件。另用固定故障注入检查了执行中出现新目标不覆盖、删除旧名失败留下双名的情形;这不等于做过真实并发或断电测试。最终 ZIP 已在新目录解压复跑,24项均通过。解压后可自行运行 python verify.py,完整记录和脚本在包内。
参考:Python 3.12 官方文档的 CSV、文件状态、硬链接及文件删除接口,2026-10-24查阅。这里验证的是固定样例和本地工具,没有评测模型的命名效果。