重新命名檔案並將副檔名之前的最後 X 個字元封裝在方括號中

重新命名檔案並將副檔名之前的最後 X 個字元封裝在方括號中

我一直在使用 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會.比對換行符號以外的任何字元。

答案2

如果您不介意使用第三方工具(我推薦一次性使用),我會推薦進階重新命名器,它是便攜式且免費的。

否則你可以使用powershell,這個描述告訴您您需要知道的一切。如果您遇到困難,請告訴我們。

相關內容