自动重命名视频文件

2023-12-07

我有很多文件想要重命名,手动重命名需要很长时间。它们是视频文件,通常采用以下格式:“节目名称 - 剧集编号 - 剧集名称”,例如“绝命毒师 - 101 - Pilot”。

我想做的是将“101”部分更改为我自己的约定“S01E01”。我认为在一系列节目中,该字符串的唯一连续部分是最后一个数字,即。 S01E01、S01E02、S01E03、S01E04 等...

任何人都可以给我关于如何在 Mac OS X 终端上执行此操作的建议。我认为使用 Automator 或其他批量重命名程序来完成此操作太复杂了...

Thanks


解决方案如下:

  • 适用于 3 位数和 4 位数的季+剧集说明符(例如107对于第 1 季第 7 集,或1002第 10 季第 2 集)
  • demonstrates advanced find and bash techniques, such as:
    • the -regex主要通过正则表达式(而不是通配符模式,如-name)
    • execdir在与每个匹配文件相同的目录中执行命令(其中{}包含匹配的文件name only)
    • 调用临时的bash演示正则表达式匹配的脚本=~并通过内置报告捕获组${BASH_REMATCH[@]}多变的;命令替换($(...)) 用零向左填充值;变量扩展以提取子字符串(${var:n[:m]}).
# The regular expression for matching filenames (without paths) of interest:
# Note that the regex is partitioned into 3 capture groups 
# (parenthesized subexpressions) that span the entire filename: 
#  - everything BEFORE the season+episode specifier
#  - the season+episode specifier,
#  - everything AFTER.
# The ^ and $ anchors are NOT included, because they're supplied below.
fnameRegex='(.+ - )([0-9]{3,4})( - .+)'

# Find all files of interest in the current directory's subtree (`.`)
# and rename them. Replace `.` with the directory of interest.
# As is, the command will simply ECHO the `mv` (rename) commands.
# To perform the actual renaming, remove the `echo`.
find -E . \
 -type f -regex ".+/${fnameRegex}\$" \
 -execdir bash -c \
   '[[ "{}" =~ ^'"$fnameRegex"'$ ]]; se=$(printf "%04s" "${BASH_REMATCH[2]}");
   echo mv -v "{}" "${BASH_REMATCH[1]}S${se:0:2}E${se:2}${BASH_REMATCH[3]}"' \;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动重命名视频文件 的相关文章

  • 在 XCode 7.0.1 中设置 VTK 6.1

    所以 我遇到了问题VTK 可视化工具包 http www vtk org在 Mac OSX 上工作 特别是让它在XCode https developer apple com xcode 我让它工作并将在下面发布这个问题的答案 截至 201
  • AVCaptureDevice 找不到任何设备

    这行代码是我今天遇到的问题 macOS 应用程序 NSArray devices AVCaptureDevice devicesWithMediaType AVMediaTypeVideo 我更新Xcode后 系统总是让我空着devices
  • bash 中 :-(冒号破折号)的用法

    bash中这种风格的含义是什么 PUBLIC INTERFACE eth0 目的是什么 If PUBLIC INTERFACE存在且不为null 则返回其值 否则返回 eth0 实际上有一些记录在bash 手册页 http linux di
  • 如何在可编写脚本的应用程序中将任意 AppleScript 记录传递给 Cocoa?

    我有一个 Cocoa 应用程序 其中包含 sdef XML 文件中描述的 AppleScript 字典 sdef 中定义的所有 AppleScript 类 命令等都是工作属性 除了我的 提交表单 命令 提交表单 命令是我尝试将任意信息哈希表
  • `pyqt5'错误`元数据生成失败`

    我正在尝试安装pyqt5使用带有 M1 芯片和 Python 3 9 12 的 mac 操作系统 我怀疑M1芯片可能是原因 我收到一个错误metadata generation failed 最小工作示例 directly in the t
  • 从 python 检测 macOS 中的暗模式

    我正在编写一个 PyQt 应用程序 我必须添加一个补丁 以便在启用暗模式的 Macos 上可以读取字体 app QApplication Fix for the font colours on macos when running dark
  • 使用 MacPorts 在 Mac OS X 10.5 上安装 PostgreSQL 时出错

    我已经使用 MacPorts 在几台不同的计算机上安装了 PostgreSQL 没有问题 但是当涉及到我自己的笔记本电脑时 我无法构建它 当我执行此命令时 sudo port install postgresql83 我收到此错误 chec
  • 我可以从命令行打印 html 文件(带有图像、css)吗?

    我想从脚本中打印带有图像的样式化 html 页面 谁能建议一个开源解决方案 我使用的是 Linux Ubuntu 8 04 但也对其他操作系统的解决方案感兴趣 你可以给html2ps http user it uu se jan html2
  • 远程 Informix 11.5 命令行客户端

    Informix 11 5 是否附带了与 SQL Server 的 SQLCMD 类似的命令行工具 如果是 如何连接到远程服务器并使用它执行常规 SELECT INSERT UPDATE 查询 正如 Michal Niklas 所说 IBM
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • Windows 上的递归移动命令

    我需要做一个 sh 的 bat 副本 我不太了解 Windows cmd 在 Linux 上我可以做 mv or rsync a SOURCE DEST remove sent files ignore existing whole fil
  • Sqlite代码28“文件在打开时重命名”

    这是一个推论这个问题 https stackoverflow com questions 27784704 sqlite deadlock across multiple threads with different files nored
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两
  • Git 2.2.x 无缘无故更新旧包文件的时间戳

    Git 2 2 0 和 2 2 1 似乎修改了旧的时间戳 git objects pack pack pack偶尔会无缘无故地文件 它只是改变时间戳 内容是相同的 调试这一点很困难 因为它似乎很少进行更改 我在 2 2 0 之前的任何 Gi
  • 在 iOS 模拟器中安装应用程序的脚本

    我正在尝试自动化构建应用程序 运行单元测试以及最终运行 UI 测试的过程 我正在通过命令行 xcodebuild sdk iphonesimulator6 0 在某个目录中构建应用程序 如何通过命令行 在 Library Applicati
  • C++ 是否可以在 MacOS 上与 OpenMP 和 boost 兼容?

    我现在已经尝试了很多事情并得出了一些结论 也许 我监督了一些事情 但似乎我无法完成我想要的事情 问题是 是否有可能使用 OpenMP 和 boost 在 MacOS High Sierra 上编译 C 一些发现 如果我错了请纠正我 Open
  • 在 bash 脚本中提取 XML 值 [重复]

    这个问题在这里已经有答案了 我正在尝试从 xml 文档中提取一个值 该文档已作为变量读入我的脚本中 原始变量 data is
  • 分叉/多线程进程|重击

    我想让我的代码的一部分更加高效 我正在考虑让它分叉成多个进程 并让它们一次执行 50 100 次 而不是只执行一次 例如 伪 for line in file do foo foo2 foo3 done 我希望这个 for 循环运行多次 我
  • 如何在 OSX 上安装 numpy 和 scipy?

    我是 Mac 新手 请耐心等待 我现在使用的是雪豹 10 6 4 我想安装numpy和scipy 所以我从他们的官方网站下载了python2 6 numpy和scipy dmg文件 但是 我在导入 numpy 时遇到问题 Library F
  • 为什么 $((true == false)) 在 bash 中计算结果为 1?

    为什么 bash 有以下行为 echo true false 1 我本以为这会打印0 但它打印1 以下事实使情况变得更加复杂 gt echo true 0 gt echo false 0 gt echo true true 1 gt ech

随机推荐

  • Jquery 日期选择器:选择一个日期,自动更新第二个字段

    我正在使用 Kelvin Luck 的 jQuery 日期选择器插件 http www kelvinluck com assets jquery datePicker v2 demo 并且需要执行以下操作 也许有人可以帮助我 在旅行保险网站
  • Android中如何设置第一个Seekbar过程值是为第二个Seekbar分配初始值?

    我有两个搜索栏 我想设置第一个Seekbar的过程值是为第二个Seekbar分配初始值 我的确切要求是 我希望用三个搜索栏覆盖 0 到 100 例如 如果 FirstSeekBar 覆盖 1 到 30 则第二个搜索栏自动启动 30 到 10
  • R重复序列每次重复加1

    我的 R 类作业簿有一个问题 我无法解决 我需要 编写一个使用rep 创建一个包含元素1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7的向量的R命令 它似乎是一个 1 到 4 的重复序列 重复 4 次 并且每次重复时向起始元素
  • Mac 上禁用 Chrome 开发者工具

    我知道有关如何启用 Chrome 开发人员工具的问题过去已经得到解答 但它们适用于 Windows 我使用的是 Mac 开发人员工具呈灰色 检查元素也是如此 如何在我的 Mac 上重新启用它们 解决方案 1 重置 Chrome 的标志 On
  • 如何在 Xcode 中重命名项目?

    我有一个用 Objective C 编写的已完成的应用程序 我想重命名该文件 我怎么做 最新版本的 Xcode 在 项目 菜单中有一个 重命名 项
  • UIImageView.animationImages之后如何清除内存?

    我创建了一个新的 Xcode 项目 其中仅包含以下内容 从 png 创建 UIImage 数组的代码拖入项目 在将图像附加到数组时 我尝试了 UIImage named 和 UIImage contentsOfFile 一个 UIImage
  • 为什么即使结果定义为浮点数,结果输出也是整数?

    include
  • 在 Ada 中创建子类型而不指定范围有什么意义?

    在Ada中 我经常看到这样的东西 type Number is new Integer 这有什么意义呢 难道你就不能快乐吗 Integer 我还看到过这样的代码 type Small Number is range 1 5 这对我来说是有道
  • 如何在 Java 中表示和操作大于 24:00 的时间值?

    我目前正在一个应用程序域中做一些工作 该域使用大于 24 00 的时间值来表示午夜之后仍与前一天的详细信息相关的时间 例如 它可能使用星期一的 25 15 来表示星期二的凌晨 1 15 因为从域的角度来看 该值仍然与星期一的数据相关联 维基
  • KVM/桥接器:没有到主机的路由

    我已经在 Fedora 17 上使用 KVM 设置了虚拟机 并为 KVM 配置了桥接网络 主机和虚拟机均采用手动IP配置 主机IP为192 168 0 2 虚拟机IP为192 168 0 10 从虚拟机我可以毫无问题地连接到主机 但从主机我
  • Jquery点击事件不起作用

    当我点击 test2 的 test1 时没有结果
  • 按下主页按钮时暂停 Sprite Kit 场景

    我想知道按下主页按钮时如何暂停我的精灵套件场景 我在这里找到了很少的答案 并尝试了这样的通知中心 当我的场景加载时 NSNotificationCenter defaultCenter addObserver self selector s
  • Swift 中使用 POST 方法进行 HTTP 请求

    我正在尝试在 Swift 中运行 HTTP 请求 将 2 个参数 POST 到 URL Example Link www thisismylink com postName php Params id 13 name Jack 最简单的方法
  • Swift 中 UITextView 和 UITextField 的单一扩展

    我想创建一个扩大对彼此而言UITextField and UITextView并向其中添加以下方法 func addDoneButtonOnKeyboardWith selector Selector let keyBoardToolBar
  • 使用 JavaScript 将秒转换为 HH-MM-SS?

    如何将秒转换为HH MM SS使用 JavaScript 字符串 您可以借助 JavaScript Date 方法在没有任何外部 JavaScript 库的情况下做到这一点 如下所示 const date new Date null dat
  • PostgreSQL Last_value 忽略空值

    我知道已经有人问过这个问题 但为什么下面的解决方案不起作用 我要填value最后一个非空值的排序方式为idx 我所看到的 idx coalesce 1 2 2 4 3 4 5 10 5 rows 我想要的是 idx coalesce 1 2
  • 使用 shell_exec('passwd') 更改用户密码

    我需要能够通过网页 在受控环境中 更改用户的密码 因此 为此 我使用以下代码 我的问题是该脚本没有更改用户 testUser 的密码 我究竟做错了什么 Thanks 另一种选择是使用一个 shell 脚本 比如名为 passwd chang
  • 在 C# 中使用 newtonsoft 查找并返回 JSON 差异?

    我想获得使用 Newtonsoft 进行比较时不匹配的 JSON 部分的列表 我有这个比较代码 JObject xpctJSON JObject Parse expectedJSON JObject actJSON JObject Pars
  • 编译静态版QT + OpenSSL 支持

    我从这里下载了 qt everywhere opensource src 5 8 0 的源文件 https download qt io snapshots qt 5 8 5 8 0 latest src 我想编译它并支持静态版本的 QT
  • 自动重命名视频文件

    我有很多文件想要重命名 手动重命名需要很长时间 它们是视频文件 通常采用以下格式 节目名称 剧集编号 剧集名称 例如 绝命毒师 101 Pilot 我想做的是将 101 部分更改为我自己的约定 S01E01 我认为在一系列节目中 该字符串的