首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文件重命名为子目录

将文件重命名为子目录
EN

Unix & Linux用户
提问于 2020-09-25 05:06:48
回答 1查看 43关注 0票数 0

我试图用“重命名”重命名一堆文件,并且我的regex设置得很好:

rename --verbose --path 's|^\[(....)\](.*)\.(.*)|$2 ($1).$3|' *

但是我真的很希望每个文件都被放入一个目录中,并且有一个共同的开始,所以我尝试了一下:

rename --verbose --path 's|^\[(....)\](.*)\.(.*)|$2 ($1)/$2 ($1).$3|' *

但是这会抱怨没有一个目录存在(因为它们不存在)。我是否遗漏了一个有用的重命名标志,还是它们是一个更好的工具?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2020-09-29 06:39:39

如果您使用的是基于Perl的rename,那么没有什么可以阻止您调用mkdir()来创建缺少的目录:

代码语言:javascript
复制
rename --verbose '
    s|^\[(....)\](.*)\.(.*)|$2 ($1)/$2 ($1).$3| &&
    mkdir("$2 ($1)")' *

这与您使用的Perl表达式相同,在结束时添加了对mkdir()的调用,以便在表达式匹配的情况下创建目录。

原始替换是否正确,或者是否有意义,我不知道(我不知道您有什么类型的文件名)。关键是,由于表达式是一个通用的Perl表达式,只要$_ (默认变量)在最后设置为结果文件名,您就可以自由使用任何Perl代码。

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

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

复制
相关文章

相似问题

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