Rename

使用重命名工具重命名文件 - 在方括號周圍移動

  • February 6, 2022

菜鳥問題。按照這個答案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’s zmv

$ 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也實施了自己的一些保障措施。它會在開始進行任何重命名之前檢查任何衝突。

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