V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
jaxvanyang
V2EX  ›  分享创造

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

  •  
  •   jaxvanyang · 157 天前 · 1085 次点击
    这是一个创建于 157 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为我在自己的媒体服务器里使用的都是 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 友可以尝试一下、提提意见:)

    4 条回复    2024-06-22 12:04:06 +08:00
    missqso
        1
    missqso  
       157 天前 via iPhone
    自带电池啥意思
    jaxvanyang
        2
    jaxvanyang  
    OP
       157 天前 via Android
    @missqso batteries included philosophy: https://peps.python.org/pep-0206/#batteries-included-philosophy
    Python 标准库的设计理念,即在标准库里提供大量实用函数,使大部分功能不需要自己实现或导入外部库,像是买遥控器附赠电池,开箱即用。比如标准库提供了 argparse 模块来做命令行参数解析,就不用自己实现参数检查、帮助信息排版之类的功能,只要使用对应的接口就行。
    txhwind
        3
    txhwind  
       157 天前
    我感觉这种重命名需求还是比较个性化的,源代码用不了几行,不如自己写
    jaxvanyang
        4
    jaxvanyang  
    OP
       157 天前 via Android
    @txhwind 确实,自己写也很简单,这个也只考虑了我自己的需求,但扩展也不难
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5039 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 05:41 · PVG 13:41 · LAX 21:41 · JFK 00:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.