我一直在使用 youtube-dl 下載整個 youtube 頻道以供存檔。我一直使用預設命名模式來命名視頻,其中使用視頻標題,然後是連字符,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
where會.
比對換行符號以外的任何字元。