用于更改文件名顺序的正则表达式

时间:2012-05-08 23:48:57

标签: regex

我已经扫描了一组约100张打印的照片,每张照片都有一个带有前缀和自动增量索引的文件名,当我已经完成80张时,我意识到订单不是正确的。无论如何,我继续说完,但现在我有100个带有这些名字的文件

Prefix1_000.jpg
Prefix1_001.jpg
...
Prefix1_099.jpg

事实证明(假设)图片“Prefix1_080.jpg”实际上应该是第一个集合,“Prefix1_081.jpg”是第二个,依此类推。

我已经下载了PFrank,它允许我使用正则表达式批量重命名文件。问题是我对它们知之甚少。

我想将左侧的名称重命名为右侧的名称:

Prefix1_000.jpg --> Prefix2_020.jpg
Prefix1_001.jpg --> Prefix2_021.jpg
...
Prefix1_079.jpg --> Prefix2_099.jpg
Prefix1_080.jpg --> Prefix2_000.jpg
Prefix1_081.jpg --> Prefix2_001.jpg
...
Prefix1_099.jpg --> Prefix2_019.jpg

是否可以使用正则表达式执行此操作?如果是这样,您会使用哪种搜索和替换模式?我没有问题来改变前缀(以避免自我重叠)。

已修改:不连续性不必是10的倍数,如80.实际上它是一个丑陋的数字,如81.

2 个答案:

答案 0 :(得分:1)

您可以使用PowerShell轻松完成此操作。这是第一个,我会让你处理剩下的事情。不应该超过10分钟左右。

Dir Prefix1_00*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_00","Prefix2_02"  }

Dir Prefix1_01*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_01","Prefix2_03"  }

Dir Prefix1_02*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_02","Prefix2_04"  }

Dir Prefix1_03*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_03","Prefix2_05"  }

Dir Prefix1_04*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_04","Prefix2_06"  }

Dir Prefix1_05*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_05","Prefix2_07"  }

Dir Prefix1_08*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_08","Prefix2_00"  }

Dir Prefix1_09*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_09","Prefix2_01"  }

Dir Prefix1_06*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_06","Prefix2_08"  }

Dir Prefix1_07*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_07","Prefix2_09"  }

花了大约10分钟......享受!

答案 1 :(得分:1)

阻力最小的路径可能是以10个步骤完成。因此,请将Prefix1_(.)0(.)\.jpg重命名为Prefix2_\12\2\.jpg,然后将Prefix1_(.)1(.)\.jpg重命名为Prefix2_\13\2\.jpg,等等。我不建议尝试使用正则表达式进行算术运算。

这里简单解释一下语法:每个(.)表示一个任意单个字符(.),应该记住以供以后使用((...)); \.意味着一个.字符(而不是“任何单个字符”,意思是你之前看过的)。然后,在替换中,\1\2表示“第一个(...)组”和“第二个(...)组”。

正如Chris Gessler所说,你也可以使用其他更通用的工具。 (如果我遇到同样的问题,我可能会用Python做。)但是没有特别的理由不使用你已经拥有的工具。