收起左侧

分享批量重命名工具,需要SSH

3
回复
216
查看
[ 复制链接 ]

29

主题

62

回帖

0

牛值

fnOS系统内测组

2025-3-15 14:39:31 显示全部楼层 阅读模式

看到论坛好多家伙在求重命名功能:

`飞牛下载希望添加重命名功能 - 建议反馈 飞牛私有云论坛 fnOS

https://club.fnnas.com/forum.php?mod=viewthread&tid=18233&highlight=

建议增加批量重命名功能 - 建议反馈 飞牛私有云论坛 fnOS

https://club.fnnas.com/forum.php?mod=viewthread&tid=1779&highlight=

文件复制功能增加覆盖、跳过或重命名功能 - 建议反馈 飞牛私有云论坛 fnOS

https://club.fnnas.com/forum.php?mod=viewthread&tid=13490&highlight=

文件管理建议增加批量重命名功能 - 建议反馈 飞牛私有云论坛 fnOS

https://club.fnnas.com/forum.php?mod=viewthread&tid=17311&highlight=

文件管理希望增加批量重命名功能 - 建议反馈 飞牛私有云论坛 fnOS

https://club.fnnas.com/forum.php?mod=viewthread&tid=14053&highlight=`

下面就分享批量重命名工具,需要SSH

环境搭建

sudo apt-get install rename       # Ubuntu/Debian
sudo yum install prename          # CentOS/RHEL

常用命令

rename [选项] ‘原始模式’ ‘目标模式’ 文件

示例

秦时明月.未删减版.EP01秦时明月.未删减版.EP01.2015.HD720P.X264.AAC.Mandarin.CHS.Mp4Ba.mp4

改名为

01.mp4

rename 's/abc/xyz/' *.txt
// 上面一句解释:将当前目录下所有的 .txt 文件的文件名中的 abc 替换为 xyz:
rename 's/秦时明月.未删减版.EP//' *.mp4
// 上面一句解释:将当前目录所有mp4文件,文件名中的“秦时明月.未删减版.EP”替换为空
rename 's/.2015.HD720P.X264.AAC.Mandarin.CHS.Mp4Ba//' *.mp4
// 上面一句解释:将当前目录所有的mp4文件,文件名中的:.2015.HD720P.X264.AAC.Mandarin.CHS.Mp4Ba"替换为空
收藏
送赞
分享

5

主题

19

回帖

0

牛值

江湖小虾

2025-3-15 21:08:31 显示全部楼层
可以看看我写的批量重命名软件:
https://club.fnnas.com/forum.php ... &extra=page%3D1

我觉得这个工具软件的使用方式不符合直觉。
rename 's/.2015.HD720P.X264.AAC.Mandarin.CHS.Mp4Ba//' *.mp4
// 上面一句解释:将当前目录所有的mp4文件,文件名中的:.2015.HD720P.X264.AAC.Mandarin.CHS.Mp4Ba"替换为空
使用我写的工具可以这样:
name-fixer Mandarin
实现的效果是遍历当前目录和子孙目录,将所有包含关键字Mandarin的文件全部移动到当前目录下Mandarin文件夹内,所有视频文件若包含数字则视频文件会被重命名为Mandarin-数字.源文件扩展名。

5

主题

19

回帖

0

牛值

江湖小虾

2025-3-15 21:21:17 显示全部楼层
对于nas下载大量视频文件要重命名的使用场景,我结合自己的实际使用体验,几乎不会有重命名的情况,基本上都是删掉若干关键字做净化处理。
可以看看我写的测试文件里面的案例:

package main

import (
        "testing"
)

func TestCleanFileName(t *testing.T) {
        tests := []struct {
                name           string
                fileName       string
                seriesName     string
                removePatterns []string
                want           string
        }{
                {
                        name:           "正常文件名带数字",
                        fileName:       "[abc-xyz.com]剧集01.mp4",
                        seriesName:     "剧集",
                        removePatterns: []string{"[abc-xyz.com]"},
                        want:           "剧集-01.mp4",
                },
                {
                        name:           "文件名中间有数字但以其他数字结尾",
                        fileName:       "动漫第01话 第02集.mp4",
                        seriesName:     "动漫",
                        removePatterns: []string{"话", "集"},
                        want:           "动漫-02.mp4",
                },
                {
                        name:           "文件名没有数字",
                        fileName:       "无数字文件.mp4",
                        seriesName:     "测试",
                        removePatterns: nil,
                        want:           "无数字文件.mp4",
                },
                {
                        name:           "文件名有多个数字和特殊字符",
                        fileName:       "[Sub-Group]_Series_01_[1080p]_[123ABC].mkv",
                        seriesName:     "Series",
                        removePatterns: []string{ "[1080p]", "[123ABC]"},
                        want:           "Series-01.mkv",
                },
                {
                        name:           "文件名以数字开头",
                        fileName:       "01.测试文件.avi",
                        seriesName:     "测试",
                        removePatterns: nil,
                        want:           "测试-01.avi",
                },
                {
                        name:           "文件名包含中文数字",
                        fileName:       "动画第一集第2话.mp4",
                        seriesName:     "动画",
                        removePatterns: []string{"第", "集", "话"},
                        want:           "动画-2.mp4",
                },
                {
                        name:           "文件名包含中文数字,removePatterns为空",
                        fileName:       "动画第一集第2话.mp4",
                        seriesName:     "动画",
                        removePatterns: []string{},
                        want:           "动画-2.mp4",
                },
                {
                        name:           "文件名包含多组数字和特殊字符",
                        fileName:       "[字幕组]动漫名EP01.第1话.1080P.mp4",
                        seriesName:     "动漫名",
                        removePatterns: []string{"[字幕组]", "EP", "第1话", "1080P"},
                        want:           "动漫名-01.mp4",
                },
                {
                        name:           "文件名包含下划线和空格",
                        fileName:       "_Series Name_ _01_ .mkv",
                        seriesName:     "Series Name",
                        removePatterns: []string{"_"},
                        want:           "Series Name-01.mkv",
                },
                {
                        name:           "文件名不包含数字但需要移除指定字符串",
                        fileName:       "[字幕组]测试文件[1080P].mp4",
                        seriesName:     "测试",
                        removePatterns: []string{ "[1080P]"},
                        want:           "[字幕组]测试文件.mp4",
                },
                {
                        name:           "文件名不包含数字且需要移除多个重复字符串",
                        fileName:       "[Sub]测试[Sub]文件[Sub].mp4",
                        seriesName:     "测试",
                        removePatterns: []string{"[Sub]"},
                        want:           "测试文件.mp4",
                },
        }

        for _, tt := range tests {
                t.Run(tt.name, func(t *testing.T) {
                        if got := cleanFileName(tt.fileName, tt.seriesName, tt.removePatterns); got != tt.want {
                                t.Errorf("cleanFileName() = %v, want %v", got, tt.want)
                        }
                })
        }
}

尤其是很多这种[Sub-Group]_Series_01_[1080p]_[123ABC].mkv,混杂了网站名、字幕组、分辨率等关键字的视频文件,基本上都是要做净化处理,即删除网站名、字幕组、分辨率等内容,让视频文件保持 剧名-集数.mkw这种清爽的格式。

批量处理类似[Sub-Group]_Series_01_[1080p]_[123ABC].mkv的文件,使用下面的命令即可:
name-fixer Series [1080p] [123ABC]
最终会在当前目录生成Series目录,且里面的文件都是Series-01.mkv、Series-02.mkv、Series-03.mkv
使用起来很简洁,符合直觉,几乎不用学习,看个案例就能上手用了。
ylg
mark 标记下  详情 回复
2025-3-20 14:21

2

主题

5

回帖

0

牛值

江湖小虾

2025-3-20 14:21:57 显示全部楼层
征xx 发表于 2025-3-15 21:21
对于nas下载大量视频文件要重命名的使用场景,我结合自己的实际使用体验,几乎不会有重命名的情况,基本上 ...

mark 标记下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则