Scripting

(perl) 重命名批量文件 - 將 #{NUMBER} 開頭的部分移到前面

  • February 23, 2021

我正在嘗試使用 rename with perl scripting 使用範例格式重命名許多文件

'Balisong Tutorial - (0g Chaplin) - Advanced #21-d8ajkHL34s0.mkv'
'Balisong Tutorial - (ALT Reverse Behind the 8 Ball) - Advanced #1-vpDt7sdYwpQ.webm'
'Balisong Tutorial - (Around the Twirld) - Advanced #16--BEi7dyGJkI.mkv'
'Balisong Tutorial - (Around the World) - Advanced #7-doEKZCCqfDY.mkv'
'Balisong Tutorial - (Backhand Catch) - Advanced #29-ETHKZZ6cKWc.mkv'
'Balisong Tutorial - (Blender) - Advanced #6-7nR3_Z2HkbM.mkv'

第一個標題

Balisong 教程 - (0g Chaplin) - 進階 #21 -d8ajkHL34s0.mkv

我怎樣才能將#21 移到前面以顯示為這樣

#21 Balisong 教程 - (0g Chaplin) - Advanced d8ajkHL34s0.mkv

不幸的是,我不熟悉 Sed,也不知道如何通過重命名來完成此操作。

任何幫助將不勝感激。如果可能的話,我將非常感謝您對所使用的語法進行簡單的解釋。我知道這裡的例子有點傻,但仍然有助於理解未來情況的解決方案。

感謝您的時間。

使用基於 perl 的rename命令,您可以擷取

  1. 一切到#
  2. #一個或多個後面的數字

然後可選地匹配但不擷取一個或多個破折號;然後以相反的順序替換擷取的子字元串:

$ rename -n 's/(.*)(#\d+)-+/$2 $1/' *.mkv
rename(Balisong Tutorial - (0g Chaplin) - Advanced #21-d8ajkHL34s0.mkv, #21 Balisong Tutorial - (0g Chaplin) - Advanced d8ajkHL34s0.mkv)
rename(Balisong Tutorial - (Around the Twirld) - Advanced #16--BEi7dyGJkI.mkv, #16 Balisong Tutorial - (Around the Twirld) - Advanced BEi7dyGJkI.mkv)
rename(Balisong Tutorial - (Around the World) - Advanced #7-doEKZCCqfDY.mkv, #7 Balisong Tutorial - (Around the World) - Advanced doEKZCCqfDY.mkv)
rename(Balisong Tutorial - (Backhand Catch) - Advanced #29-ETHKZZ6cKWc.mkv, #29 Balisong Tutorial - (Backhand Catch) - Advanced ETHKZZ6cKWc.mkv)
rename(Balisong Tutorial - (Blender) - Advanced #6-7nR3_Z2HkbM.mkv, #6 Balisong Tutorial - (Blender) - Advanced 7nR3_Z2HkbM.mkv)

-n當您對建議的轉換感到滿意時,請刪除。

引用自:https://unix.stackexchange.com/questions/635923