首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更改文件名顺序的正则表达式

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

Stack Overflow用户
提问于 2012-05-08 23:48:57
回答 2查看 153关注 0票数 0

我扫描了一组大约100张打印的照片,每个照片都有一个前缀和一个自动递增索引的文件名,当我已经完成了其中的80张时,我意识到这个顺序不是正确的。不管怎样,我继续说,说完了,但现在我有100个文件,上面有这些名字。

代码语言:javascript
运行
复制
Prefix1_000.jpg
Prefix1_001.jpg
...
Prefix1_099.jpg

事实证明,(比方说)图片"Prefix1_080.jpg“实际上应该是集合中的第一个,"Prefix1_081.jpg”,第二个,等等。

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

我想把左边的名字重命名为右边的名字:

代码语言:javascript
运行
复制
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。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-09 00:02:18

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

在这里简单地解释一下语法:每个(.)意味着一个应该被记住的任意单个字符(.),供以后使用((...));\.指的正是一个.字符(相对于“任意单个字符”,意思是您刚才看到的)。然后,在替换中,\1\2的意思是“第一个(...)组”和“第二个(...)组”。

正如所说,你也可以使用其他更通用的工具来完成这个任务。(如果我遇到同样的问题,我可能会用Python进行处理。)但是没有特别的理由不使用你拥有的工具。

票数 1
EN

Stack Overflow用户

发布于 2012-05-08 23:59:13

您可以通过PowerShell轻松地做到这一点。第一个,我让你来处理剩下的。不应该超过10分钟左右。

代码语言:javascript
运行
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10508074

复制
相关文章

相似问题

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