首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用重命名工具重命名文件-在方括号周围移动

使用重命名工具重命名文件-在方括号周围移动
EN

Unix & Linux用户
提问于 2022-02-05 14:00:04
回答 2查看 486关注 0票数 3

新手问题。按照这个答案,将文件名的最后一部分移到前面,我也尝试这样做,除了我的例子中的所有文件都包含方括号。

我想要的是将标题移到括号的另一边(保留文件扩展名),这样:title ![s2_e2].mp4重命名为:[s2_e2]title !.mp4第一部分可能包含感叹号和空格,但没有其他需要转义的字符。

我已经想出了这一点,但它只删除了文件名,直到第一个方括号:rename -n 's/^.*\[//' *

我在这里走的路对吗?我如何在Linux上使用perl重命名工具来完成这个任务呢?

谢谢!

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2022-02-05 14:09:39

如果我正确理解,您需要将方括号内的任何文本移到文件名的开头。假设文件名中只有一组方括号,您可以这样做:

代码语言:javascript
复制
rename -n 's/(.*)(\[.+?\])/$2$1/s' *

在您的示例中运行此示例将提供:

代码语言:javascript
复制
$ rename -n 's/(.*)(\[.+?\])/$2$1/s' *
title ![s2_e2].mp4 -> [s2_e2]title !.mp4
票数 4
EN

Unix & Linux用户

发布于 2022-02-06 14:34:07

我会在这里使用zsh's zmv

代码语言:javascript
复制
$ 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也实现了自己的一些安全措施。在开始重命名之前,它将检查是否有任何冲突。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/689393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档