我一直在使用 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
匹配除.
换行符之外的任何字符。