重命名文件并将扩展名前的最后 X 个字符封装在方括号中

重命名文件并将扩展名前的最后 X 个字符封装在方括号中

我一直在使用 youtube-dl 下载整个 youtuber 频道以用于存档。我一直使用默认命名模式来命名视频,即使用视频标题,然后是连字符,然后是 11 个字符的视频 ID,最后是文件扩展名。

例如

title of the video - (an example)-oHg5SJYRHA0.mp4

对于将来的下载,我删除了连字符,并将视频 ID 放在方括号内。问题是,我已经有数百个遵循旧命名方案的视频,我不想浪费带宽重新下载只是为了获得新的命名方案。

我如何重命名不同长度的文件,以便在“.mp4”之前放置“]”并且连字符,“].mp4”之前的 11 个空格/字符被“[”替换?

例如

title of the video - (an example)[oHg5SJYRHA0].mp4

[编辑] 我忘了说明我更喜欢可以在 Linux 和/或 FreeNAS/BSD 上运行的解决方案。

答案1

在Linux下,你可以使用改名像这样的命令:

rename 's/-\w{11}(?=\.mp4$)/[$&]/' *.mp4

正则表达式解释:

-           # a hyphen
\w{11}      # 11 word characters
(?=         # positive lookahead, make sure we have after:
  \.mp4     # a dot followed by mp4
  $         # end of string
)           # end lookahead

替代品:

[           # opening square bracket
$&          # the whole match (i.e. 11 characters)
]           # closing squarre bracket

如果这 11 个字符可以是单词字符以外的其他字符,则使用以下命令:

rename 's/-\K.{11}(?=\.mp4$)/[$&]/' *.mp4

匹配除.换行符之外的任何字符。

答案2

如果你不介意使用第三方工具(我建议一次性使用),我建议高级重命名器,它是便携的并且免费的。

否则你可以使用 powershell,这个描述告诉您所有需要了解的信息。如果您遇到困难,请告知我们。

相关内容