V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ysmood
V2EX  ›  分享发现

分享个工具批量重命名工具

  •  
  •   ysmood · 2019-07-17 15:37:21 +08:00 · 4052 次点击
    这是一个创建于 1961 天前的主题,其中的信息可能已经有所发展或是发生改变。

    demo

    Plex 的自动匹配视频信息功能非常好用,但是自动匹配还不够智能,对文件名的格式有一定的要求,经常需要批量重命名文件。我正则批量改名经常手残所以写了个工具帮助 debug。不知道大家怎么处理 plex 的文件名问题,这里就抛砖引玉了。

    项目地址

    15 条回复    2019-07-19 00:42:45 +08:00
    KentY
        1
    KentY  
       2019-07-17 16:13:22 +08:00
    重命名都是现写一行 awk, 不管多复杂的情况都可以应付.
    GoalKeeper
        2
    GoalKeeper  
       2019-07-17 17:41:25 +08:00
    @KentY 对头
    ysmood
        3
    ysmood  
    OP
       2019-07-17 21:08:13 +08:00
    @KentY 这个工具的主要目的是用来防止错误的,awk 如果搞错了很可能文件都没了,比如重命名成了同一个名字的情况我就碰到过,文件想找回来都难,这个工具的好处是大部分情况我都不用传任何参数和思考就能完成批量命名的任务了,基本用默认值就好了。
    huangjx
        4
    huangjx  
       2019-07-17 23:37:27 +08:00 via iPhone
    批处理 + Excel 已够用,整这么多,难受😣
    style4321234
        5
    style4321234  
       2019-07-18 00:03:35 +08:00 via iPhone
    1.批处理,生成当前文件夹下文件名“ dir /b>rename.csv ” 2.打开 csv,B 列输入需要改的名称 3.选中 AB 两列,复制粘贴,正则表达式(.*)\t(.*)查找替换为 ren "$1" "$2"4.运行
    ysmood
        6
    ysmood  
    OP
       2019-07-18 04:29:51 +08:00
    @huangjx excel 太麻烦了还不如直接 sublime 或 vscode 多行同时编辑来的快,然而就是因为来回拷贝文件名又麻烦且容易出错才写个工具代劳。

    @style4321234 然而我就输入 `renamefiles` 回车就完事了,根本不需要那些花里胡哨的操作 XD,同时支持 windows,
    linux 和 mac。
    dangyuluo
        7
    dangyuluo  
       2019-07-18 04:37:24 +08:00
    记录下文件的 inode 就不怕了
    ysmood
        8
    ysmood  
    OP
       2019-07-18 05:16:46 +08:00
    @dangyuluo 那也没有预览来的方便啊,复杂的情况我都是多次运行这个工具渐进调试正则,预览无误了才执行重命名操作,确实帮我从源头解决了不少问题。

    另外虽然概率小的可怜,即使有 inode 但文件被覆盖的可能性你不考虑吗?比如一个 background 程序正在以 GB 的速度下载文件,磁盘可用空间很小。
    jaskle
        9
    jaskle  
       2019-07-18 07:07:38 +08:00 via Android
    作为一个程序员,我觉得这个工具在 v 圈里意义不大
    liuxey
        10
    liuxey  
       2019-07-18 08:32:32 +08:00
    我就不吐槽了,虽然真没什么用
    Gatsbywl
        11
    Gatsbywl  
       2019-07-18 10:42:45 +08:00
    我基本都是用 py,os.rename
    hoythan
        12
    hoythan  
       2019-07-18 10:49:16 +08:00
    macOS 右击自带批量重命名。
    ysmood
        13
    ysmood  
    OP
       2019-07-18 13:37:16 +08:00
    @Gatsbywl 如果只是偶尔用下程序员确实是没必要下载个工具,但是可以试下 ruby,比 python 要好用多了,一行代码就能搞定 glob 加命令行调用,不需要任何 3 方依赖,比 awk 可读性也好很多

    ```
    Dir['*'].each_with_index { |path, i| `mv #{path} #{i}` }
    ```

    在使用这个工具以前我基本都是这么干的,每次都写个垃圾脚本出来处理重命名太麻烦了,所以才有了 renamefiles 这个工具。

    @hoythan 我主要是在家里的 linux 服务器上用。而且那工具最大的问题是不支持正则。
    xml123
        14
    xml123  
       2019-07-18 21:13:33 +08:00
    我想知道 lz 的工具能不能应对重命名过程中有重名,但是重命名完之后没有的情况。
    比如 a.txt->b.txt ,b.txt->a.txt
    ysmood
        15
    ysmood  
    OP
       2019-07-19 00:42:45 +08:00
    @xml123 加入 reindex 功能时,顺带支持了。原理很简单,先把所有文件按 uuid 重命名,然后再做一次重命名到最终格式。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3156 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:30 · PVG 21:30 · LAX 05:30 · JFK 08:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.