将文件重命名为子目录

爱他

我正在尝试使用“重命名”重命名一堆文件,并且我的正则表达式设置得很好:

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

但我真的很想将每个文件放入一个具有共同开头的目录中,所以我尝试了:

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

但这抱怨没有任何目录存在(因为它们不存在)。我是否错过了一个有用的重命名标志,或者他们是一个更好的工具?

库萨兰达

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

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

这与您使用的 Perl 表达式相同,mkdir()如果表达式匹配,则在末尾添加调用以创建目录。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将多个目录中的文件重命名为目录名

将目录中的所有文件从$ filename_h重命名为$ filename_half?

PHP:以递归方式将目录中的所有文件重命名为小写

在bash中以递归方式将子目录重命名为新模式

在重命名后将子子目录文件移动到父目录的Shell脚本

根据两个列表将文件从子目录复制并重命名到不同的子目录?

对于目录,将具有子目录名称+旧文件名的子目录中的文件重命名为新目录

将子目录重命名为不同的日期格式

基于.xlsx的子目录中文件的批量重命名

将文件名从大写重命名为小写

遍历子目录,并将给定扩展名的所有文件重命名为相同的文件名

将子目录中的pdf文件重命名为子目录的名称

C#将文件重命名为与其他目录中的文件相同的名称

Winrar批处理脚本(略有改动)-将提取的文件重命名为当前目录

重命名子目录中的所有文件

将多个文件重命名为其后缀

如何将文件重命名为..(点点)?

遍历子目录,并(1)将文件复制到另一个目录(2)将其重命名为其md5哈希

在终端中将文件重命名为父目录的名称

终端:将多个文件重命名为数字顺序

重命名不同子目录中的所有文件

将文件重命名为其BASE64

将子目录中的多个文件重命名为其目录名称

自动将.rdf文件重命名为.XML

将所有文件和目录重命名为小写(包括 unicode)的脚本

以递归方式将输出 PDF 文件重命名为子目录名称 Powershell

重命名多个子目录中的同名文件

在主目录中创建命名为文件的子目录,并将文件移动到相应的子目录

重命名子目录中的所有文件