Rename
使用重命名工具重命名文件 - 在方括號周圍移動
菜鳥問題。按照這個答案Move last part of filename to front,我正在嘗試做同樣的事情,除了我的案例中的所有文件都包含方括號。
我想要的是將標題移動到括號的另一側(保留文件副檔名),因此:
title ![s2_e2].mp4
重命名為:[s2_e2]title !.mp4
第一部分可能包含驚嘆號和空格,但沒有其他需要轉義的字元。我想出了這個,但它只刪除文件名,直到第一個方括號:
rename -n 's/^.*\[//' *
我在正確的道路上嗎?我如何在 Linux 上使用 perl 重命名工具來完成它?
謝謝!
如果我理解正確,您需要將方括號內的任何文本移動到文件名的開頭。假設您在文件名中只有一組方括號,您可以執行以下操作:
rename -n 's/(.*)(\[.+?\])/$2$1/s' *
在您的範例上執行它會給出:
$ rename -n 's/(.*)(\[.+?\])/$2$1/s' * title ![s2_e2].mp4 -> [s2_e2]title !.mp4
我會在這裡使用
zsh
’szmv
:$ autoload -Uz zmv # best in ~/.zshrc $ zmv -n '(*)(\[*\])(*)' '$2$1$3' mv -- 'title ![s2_e2].mp4' '[s2_e2]title !.mp4'
(如果文件名中有一對以上的
[
/]
,它將從最右邊[
至少有一個]
後面的一對移動到最右邊]
。例如,在 中[a [b c]] [d [e]]
,它會移動[e]]
)這些天有很多 perl 的變種
rename
和很多陷阱,很難跟上它們的步伐。
zmv
也實施了自己的一些保障措施。它會在開始進行任何重命名之前檢查任何衝突。