新手问题。按照这个答案,将文件名的最后一部分移到前面,我也尝试这样做,除了我的例子中的所有文件都包含方括号。
我想要的是将标题移到括号的另一边(保留文件扩展名),这样:title ![s2_e2].mp4重命名为:[s2_e2]title !.mp4第一部分可能包含感叹号和空格,但没有其他需要转义的字符。
我已经想出了这一点,但它只删除了文件名,直到第一个方括号:rename -n 's/^.*\[//' *
我在这里走的路对吗?我如何在Linux上使用perl重命名工具来完成这个任务呢?
谢谢!
发布于 2022-02-05 14:09:39
如果我正确理解,您需要将方括号内的任何文本移到文件名的开头。假设文件名中只有一组方括号,您可以这样做:
rename -n 's/(.*)(\[.+?\])/$2$1/s' *在您的示例中运行此示例将提供:
$ rename -n 's/(.*)(\[.+?\])/$2$1/s' *
title ![s2_e2].mp4 -> [s2_e2]title !.mp4发布于 2022-02-06 14:34:07
我会在这里使用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
复制相似问题