【发布时间】:2017-10-23 14:17:18
【问题描述】:
给定一个这样命名的文件:
2016_31_3_03_01c_02
2016_31_3_04_01a_02
2016_31_3_05_01d_02
我想批量重命名它们,使它们看起来像
2016_31_3_3_1c_02
2016_31_3_4_1a_02
2016_31_3_5_1d_02
我可以为每个文件执行rename 's/03_01c/3_1c/',但这会破坏批处理的目的。
如何为rename 命令编写正则表达式来完成此操作?
类似于:rename 's/0{0..9}_01{a..d}/,但我不知道如何编写替换部分而不替换下划线后的前导零,我想保留它。
我也不太了解删除前导零的正则表达式,但保持前导零后面的数字相同。我知道正则表达式可以找到这些实例但不替换它们。
【问题讨论】:
-
for each file 看起来像
for。看看for /?。 -
是的,我将使用 for 循环,但我不明白 rename 命令所需的正则表达式。
-
你试过
rename 's/03_01c/3_1c/' *吗? -
这与Windows无关batch-files!