一个简单的批量重命名/链接/移动文件的 CLI 工具

9 天前
 jaxvanyang

因为我在自己的媒体服务器里使用的都是 PT 站上的资源,而媒体服务器通常都要求文件名遵循一定的格式(比如 Jellyfin),所以需要重命名做种的文件。虽然我用的 qBittorrent 可以重命名文件并继续做种,但一个一个重命名实在麻烦,后面就通过 Bash 脚本来干这个事,批量将视频文件软链接到对应的媒体文件夹,这样就可以同时做种和提供媒体服务。

但由于 Bash 语言的局限,这个脚本的扩展性不太好,现在重新用 Python 写了一个专门批量重命名/链接/移动文件的 CLI 工具:batchlink。Python 自带电池,很多我需要的函数标准库里都有,所以实现起来很简单。

举一个我自己的例子:

batchlink -s \
  -S "/srv/resources/Videos/Animation/死亡笔记/" \
  -d "/srv/emby/Animation/Death Note: Desu nôto (2006)/Season 01/" \
  '*.mkv' 'Death Note: Desu nôto S01E{num:02}.mkv'

-s 表示创建软链接;-S 指定源文件夹;-d 指定目标文件夹;第一个位置参数是一个 glob 通配符,用来筛选需要链接的文件;第二个位置参数是一个 Python f-string ,是创建链接名的模板。模板里的 {num:02} 会按字母表顺序被替换成从 1 开始的序号,还有一些其他的替换变量可以使用,比如从 0 开始的序号 i

希望有需求的 V 友可以尝试一下、提提意见:)

691 次点击
所在节点    分享创造
4 条回复
missqso
9 天前
自带电池啥意思
jaxvanyang
8 天前
@missqso batteries included philosophy: https://peps.python.org/pep-0206/#batteries-included-philosophy
Python 标准库的设计理念,即在标准库里提供大量实用函数,使大部分功能不需要自己实现或导入外部库,像是买遥控器附赠电池,开箱即用。比如标准库提供了 argparse 模块来做命令行参数解析,就不用自己实现参数检查、帮助信息排版之类的功能,只要使用对应的接口就行。
txhwind
8 天前
我感觉这种重命名需求还是比较个性化的,源代码用不了几行,不如自己写
jaxvanyang
8 天前
@txhwind 确实,自己写也很简单,这个也只考虑了我自己的需求,但扩展也不难

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1051585

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX