资讯详情

资讯详情

告别乱命名:用正则表达式打造自动刮削的本地番剧库

打开我存放动画剧集的文件夹经常能看到类似dragonballsuper_107-1.mkv这样的文件名。作品名倒是看得懂107 也能猜出是第 107 集可那个-1到底是怎么回事为什么一集动画会被拆成两个文件这种命名如果只有一两个还好说攒了上千集之后整个文件夹就变成了一团乱麻。今天我想借这个典型的乱命名案例聊聊我是怎么把这种混乱的本地番剧库整理成一套结构清晰、能自动生成海报墙的媒体仓库。1. 先读懂文件名dragonballsuper_107-1 在说什么1.1 文件名本身的信息量一个看似随意的文件名其实是发布者留给你的全部线索。dragonballsuper_107-1可以拆成三个信息段dragonballsuper指作品名称这里用的是英文名而不是中文名。107是总集数编号代表这部作品的第 107 集。-1是分段标识表示这一集被拆成了多个文件片段这是第一个片段。所以完整解读就是某动画作品第 107 集的片段一。这种命名方式在早年间的网络分享环境中非常常见源头有两个。一是字幕组压制后在传输过程中做了分包尤其是早期网盘单文件大小受限时一集 200MB 的动画会被拆成三个 70MB 左右的包下载后需要自己合并。二是某些播放设备对单文件大小或时长有硬性限制所以发布方干脆拆开。问题在于分包信息只到了-1这种程度没有告诉你这是总第几集、属于哪一季也没有分辨率、编码、音轨等关键信息时间一长必然混乱。1.2 番剧命名里的常见习惯相声讲究“台上十分钟台下十年功”文件命名也是这样。不同发布来源的命名风格差异极大混在一起看尤其头疼命名风格示例特点纯数字编号dragonballsuper_107-1信息少容易冲突季集编号DragonBall.Super.S01E107.1080p媒体库友好但手动命名繁琐中文习惯命名龙珠超 第107话 完结篇直观但刮削器容易认不出带完整参数的命名DragonBall.Super.E107.1080p.BluRay.x265.10bit信息完整一眼看懂画质来源对折腾过本地媒体库的人来说S01E107这种编号是大家最熟悉的规范。可问题来了一部连续播放、不分季的动画到底该怎么映射到季-集体系里我的做法是把它统一视作第一季第 107 集就写成S01E107。这样命名的好处是主流刮削器都能识别而且在文件管理器中按名称排序时数字编号会自然按集数排列不会出现第 100 集排在第 21 集前面的尴尬。2. 目录结构设计把散落的剧集变成一座图书馆2.1 三层目录按作品、季别、版本归档如果说文件命名是给单个文件盖章那目录结构就是给整座仓库搭货架。我最早期犯过的错误是把所有动画直接丢进同一个大文件夹导致的结果是不同作品混放在一起同一作品的多种分辨率版本叠在一起字幕文件散落在各处。后来我逐渐形成了一套固定的三层结构实测下来非常稳动画库/ 龙珠超/ Season 01/ 龙珠超_S01E107_1080p.mkv 龙珠超_S01E107.ass 龙珠超_S01E107.jpg第一层是作品名第二层是季目录第三层是具体的视频、字幕和封面文件。如果你收藏里同时有 720p 和 1080p 两种版本可以在第三层里再细分1080p/和720p/两个子目录而不是混着放。这样做的逻辑很简单当你想要快速检查某部作品是否完整时只需要在第二层扫一眼季目录当你需要替换某个低分辨率版本时只需要在对应版本目录里操作不会误动到其他文件。2.2 字幕和封面的存放策略字幕文件的放置位置是个容易踩坑的细节。主流播放器和媒体库都能识别同名视频文件 同名字幕文件放在同一目录的模式比如龙珠超_S01E107.mkv配龙珠超_S01E107.ass播放器会自动加载字幕。但如果你把字幕统一收进一个subs/文件夹绝大多数播放器就找不到它了每次播放都得手动挂载字幕体验极差。封面文件也一样。媒体库刮削器通常会自己去网络数据库拉取海报但如果你处于断网环境或者希望封面风格统一手动放置folder.jpg或poster.jpg就是最直接的手段。注意大小写和扩展名Folder.jpg和folder.jpg在 Linux 环境中是不同文件跨平台使用时最好统一用小写字母规范命名。还有一个容易被忽略的点不要用中文全角括号、空格、特殊符号做目录名比如龙珠超第一季这种目录名在某些脚本和自动刮削工具中会引发编码问题。虽然日常 Windows 使用没问题但一旦你需要写 PowerShell 或 Python 脚本批量处理全角标点和空格会让你多出不少转义烦恼。统一用英文括号、句点和下划线是最保险的选择。3. 批量重命名实战用正则表达式一次搞定几百个文件3.1 手动改名到底有多痛苦面对几百个dragonballsuper_107-1、dragonballsuper_107-2这样的文件手动按 F2 逐个改名是最消磨耐心的操作。我之前就吃过大亏一边看剧一边改文件改到第 80 多个时手一滑把两个集数写反了结果媒体库里的集数排列错位后面所有剧集都跟着乱。后来我决定把所有重命名工作全部交给脚本和工具完成宁可多花半小时写正则也不再用手指跟文件名较劲。3.2 正则表达式与两个常用命令如果你想批量把dragonballsuper_107-1.mkv改成DragonBall.Super.S01E107.1080p.mkv核心思路是提取出集数数字再重组文件名。这是正则表达式最典型的应用场景。先看一个最朴素的示例假设你的文件都在 Linux 或 macOS 的 bash 环境下for f in dragonballsuper_*.mkv; do num$(echo $f | sed -E s/.*_([0-9])-([0-9])\.mkv/\1/) mv $f DragonBall.Super.S01E${num}.1080p.mkv done这段脚本干的活是遍历所有符合dragonballsuper_*.mkv模式的文件用sed抓取集数数字然后重命名。-E开启扩展正则([0-9])表示捕获一组连续数字\1引用第一组捕获内容。Windows 用户也不用慌PowerShell 同样能做而且对新手来说更友好一些Get-ChildItem dragonballsuper_*.mkv | ForEach-Object { if ($_.Name -match _(\d)-(\d)\.mkv$) { $ep $matches[1] Rename-Item $_ DragonBall.Super.S01E${ep}.1080p.mkv } }-match运算符和$matches内置变量是 PowerShell 里的黄金搭档匹配成功后捕获组会逐一出现在$matches[1]、$matches[2]中。这里(\d)就是正则里的数字捕获组和 sed 中的([0-9])异曲同工。3.3 正则表达式入门分组、锚定与转义我见过不少人一听到正则就觉得是黑魔法其实核心就三条规则。第一分组用圆括号。(107)能把 107 单独捞出来后续可以用$1或\1引用。第二锚定符号。^匹配开头$匹配结尾比如_(\d)\.mkv$确保匹配目标是以数字开头、.mkv结尾的文件名避免误伤同目录下的封面文件。第三转义点号。正则里的.代表任意字符不是你文件名里的点。所以要匹配.mkv必须写成\.mkv。我实际工作中用得最多的组合是.*?非贪婪匹配它可以匹配尽可能短的字符串。比如处理dragonballsuper_107-1.mkv和dragonballsuper_108-1.720p.mkv这种长度不一的文件名时.*?能灵活跳过中间差异部分直达我需要提取的数字段。初学阶段不用追求一招打天下先会用分组、锚定、字符集[0-9]这三种就能覆盖八成以上的批处理需求。3.4 实战案例从一堆乱命名到规范目录为了让你直观感受效果我放一个小批量转换前后的对照。假设目录里有dragonballsuper_107-1.mkv dragonballsuper_107-2.mkv dragonballsuper_108-1.mkv dragonballsuper_108-2.mkv执行上面的 PowerShell 脚本后得到DragonBall.Super.S01E107.1080p.mkv DragonBall.Super.S01E107.Part2.mkv DragonBall.Super.S01E108.1080p.mkv DragonBall.Super.S01E108.Part2.mkv这里有一个细节-2命名的后半段我保留了Part2标识因为第二段文件不能和第一段用完全相同的文件名否则会互相覆盖。如果你的播放器支持分集合并播放保留Part2是必要的但大多数媒体库更推荐的做法是直接把两个片段合并成一个完整 MKV这样最省心。合并可以用 FFmpeg虽然它是命令行工具但操作并不复杂。4. 究极细节媒体库刮削器的命门在哪里4.1 刮削器是怎么认文件的我折腾本地媒体库这么多年最深的一个体会是刮削器不认人只认文件名。当你在 Jellyfin、Kodi 或 Plex 里添加媒体库后它会扫描目录下的文件名提取出作品名 季集编号然后去在线数据库匹配。所以dragonballsuper_107-1.mkv这种命名刮削器大概率会识别失败因为它既没有明显季集标识还带了个莫名其妙的-1。规范的DragonBall.Super.S01E107.1080p.mkv就完全不一样了。刮削器看到S01E107就能快速定位到第一季第 107 集进而在数据库拉取对应的标题、简介、海报和剧照。这里也解释了一个常见问题为什么有人把文件放在正确的目录里媒体库却不显示海报。十有八九是文件名没带季集编号或者用了第107话这种刮削器不认识的表达。4.2 常见的命名陷阱与修复方式我不是说中文命名一定不行但在刮削这件事上遵循惯例赢面最大。几种我踩过的典型坑缺少季标识DragonBall.Super.107这种写法刮削器可能把 107 当成季号而不是集号。多余的后缀DragonBall.Super.S01E107.END.1080p里的END会被某些刮削器误读为版本信息导致匹配失败。作品名不对刮削器依赖作品名的精确匹配DragonBall.Super和Dragon Ball Super可能代表同一个意思但数据库里存的是后者前者就可能匹配不到。修复方式没有捷径尽量用标准的作品名.S季E集.画质.编码格式。如果目录里已经有一批文件被刮削错误直接在刮削器里执行刷新元数据并强制搜索手动输入正确的作品名后通常就能纠正回来。4.3 元数据文件 NFO 到底要不要用NFO 文件是媒体库刮削结果的存档里面记录了刮削器从数据库拉回来的标题、简介、演职员表等信息。如果你对自动刮削的稳定性不满意或者经常离线使用我建议手动放置 NFO 文件。它本质上是 XML 格式的文本可以手动编辑也可以借助 Tiny Media Manager 这类工具自动生成。NFO 和海报文件配合使用等于给每一集都写了一张身份卡即使断网媒体库也能完整显示信息。不过 NFO 有个副作用它比文件名更顽固。媒体库优先读 NFO 后就不会再去在线数据库更新这意味着如果你的 NFO 是错的后续刮削也会一直错下去。所以我的策略是新入库的文件先不手动放 NFO等刮削器自动匹配后再检查只有自动匹配失败的个别文件才手动补 NFO。5. 常见问题与排查技巧实录5.1 文件名乱码和集数错位我遇到最多的问题就是集数错位。举个例子你下载了第 100 集到第 110 集的资源但某个来源漏掉了第 105 集文件名还是正常递增的。这时候如果盲目批量重命名第 106 集就会变成 105 集的文件名媒体库里后面的所有集数全部偏移。排查方法很简单重命名之前先检查完整集数列表是不是连续的。用脚本扫一遍文件名中的数字看是否有跳号再决定怎么处理。乱码问题常见于繁体中文和日文汉字。某些字幕组会把文件名写成龍珠超 第107話繁体字在简体中文系统里显示正常但在某些媒体库容器里会出现编码错误导致乱码或匹配失败。我的处理方式是用脚本把繁转简或者干脆全部改成英文命名彻底绕开编码问题。5.2 重复文件与空间浪费收藏时间长了同一个作品往往会存多个版本。dragonballsuper_107-1.mkv可能是 720p 的旧版本后来你又下载了 1080p 的新版本文件名可能叫DB_107.mkv。两个文件内容一样白白占硬盘空间。判断重复不能只看文件名我建议用哈希比较。PowerShell 里一条命令就能算出全文件夹文件的 MD5 值Get-ChildItem *.mkv | Get-FileHash -Algorithm MD5 | Export-Csv hash.csv然后横向对比文件名和哈希值就能找出内容相同但名字不同的双胞胎文件。删掉冗余版本之前记得先确认媒体库里没有指向旧文件的收藏记录。5.3 特殊剧集处理剧场版、OVA 与特别篇剧场版、OVA 和特别篇是本地媒体库里的老大难。它们不属于正常季集编号文件名又常常是独立的刮削器经常把《某作品剧场版》错误归类到正片季集里。我的处理方案是把这些内容单独建目录不混在正片季目录下动画库/ 龙珠超/ Season 01/ Specials/ 龙珠超_剧场版_布罗利.mkv 龙珠超_Specials_S01E01.mkvSpecials目录在媒体库规范里对应第 0 季很多刮削器支持识别Specials目录下的文件为特别篇。如果没有特殊季需求直接把剧场版独立存放、独立刮削也比混在正片里强。5.4 片头片尾与多音轨要不要保留最后聊一个很多人忽略的问题-1这种分段文件往往发生在片头曲或片尾曲的位置分段点刚好卡在正片开始或结束的地方。如果你合并了分段文件并打算长期归档我建议保留完整的片头片尾不要为了省空间单独切掉。因为你今天觉得片头没用明天可能就想回顾某个版本的片头动画。至于多音轨优先保留原始音轨和一条国配就足够了真要追求极简至少也不要丢掉原始音轨那是资源价值的核心所在。6. 个人经验整理资源库的节奏感如果你问我整理一个千集规模的番剧库最重要的事是什么我的回答是一次只做一件事。不要一边重命名一边想着刮削也不要一边整理目录一边清理重复文件。分阶段执行先设计目录结构再统一重命名然后检查剧集连续性最后交给媒体库刮削。每一步完成后先验证结果再进入下一步。这样做看起来慢实际上最节省时间因为你不会因为中途改主意而推翻之前的劳动成果。我还想分享一个小习惯每次下载完新内容第一时间就把它改名归位而不是攒到月底统一整理。碎片化处理十次每次三分钟远比一次性花两小时面对两百个乱命名文件要从容得多。一个好的文件名放在目录里五年后回头看依然一眼就能看懂这才是整理的真正意义。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →