Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

compare — 找重复 / 复制移动 / 脱序

对比两个文件夹按视频名称找重复,并把匹配文件加序号复制(-c 移动)到当前目录,方便人工比对封面;脱序还原文件名。

用法

compare 文件夹A 文件夹B           # 找重复,并复制匹配文件到当前目录(加序号前缀)
compare 文件夹A 文件夹B -c        # 找重复,并移动匹配文件到当前目录(加序号前缀)
compare 文件夹A 文件夹B -o        # 只找重复,生成 txt 文件
compare                          # 脱序:还原当前目录中带序号前缀的文件名
compare -h
  • -c-o 不能同时使用;文件夹参数顺序可互换
  • 找重复不删除任何文件;移动 = 同盘 rename / 跨盘先复制再删源,不会丢文件

找重复

两个文件夹按相同规则解析文件名,递归扫描子文件夹,支持扩展名 .mp4 .flv .mkv .webm .mov .avi

来源 格式
bili-sync-fav up-标题 / up1,up2-标题,分P:标题(N)-分P名(分P名自动排除)
猫抓 标题_哔哩哔哩_bilibili.mp4
NA 等工具 标题_NA.mp4 / 标题_数字.mp4
分辨率后缀 标题-(2160p25).mp4 / 4K-(1908p30).mp4
手动改名 标题.mp4

输出到运行目录:

  • 重复视频名称.txt — 重复名称每行一个,顺序与明细一致(多文件 → 疑似公共部分 → 单文件)
  • 重复视频明细.txt — 多文件 / 疑似 / 单文件三类,含路径与相似度
  • 分P 条目(标题(1)-分P名 等)若其文件已全部被更短的公共名称(多文件条目)覆盖,自动合并只保留公共名称,避免复制/移动时前一名称拿走全部文件、后续名称扑空(摘要会显示「合并重复条目」)

复制 / 移动

  • 匹配同一名称行的文件共用序号(行号,3 位补零,>999 自动加宽),A/B 标记来源: 001A紫颜-小仙紫-“和花树上的仙子对视一眼便丢了魂魄…”(1)-….mp4001B“和花树上的仙子对视一眼便丢了魂魄…”_NA.mp4
  • 子文件夹中的文件拼上相对路径(_ 连接),避免与父文件夹同名文件撞名: 001B竖屏_谁能拒绝这样的喵系萌妹捏?_NA.mp4
  • 匹配所有文件(封面图一并拷贝便于比对);目标已存在则跳过,绝不覆盖;处理时终端显示进度条(stderr,管道/重定向时自动关闭)

脱序

只去掉开头 数字[A|B] 前缀,保留拼上的子文件夹部分(还原后同名文件不会再次撞名);非该前缀开头的文件不动;只处理当前目录顶层文件。

编译与结构

cargo build --release    # 二进制: target/release/compare
  • src/main.rs — 参数分发 + 找重复
  • src/cm.rs — 复制/移动/脱序
  • 找重复.py — Python 版(python3 找重复.py 不传参时用内置默认路径)
  • 纯标准库、零依赖;release profile 已按体积优化

About

对比两个文件夹按视频名称找重复

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages