【问题标题】:How to match numbering of files across different folders e.g. rename NAME9.txt to NAME00009.txt如何匹配不同文件夹中的文件编号,例如将 NAME9.txt 重命名为 NAME00009.txt
【发布时间】:2016-10-01 09:22:38
【问题描述】:

我有一个巨大的文件列表,它们来自不同的过程,所以出于某种原因,第一个文件夹中的文件编号是这样的

A9.txt A1.txt 而另一个中的有A00009.txt A.00001.txt 我的文件不超过 99837 个,所以只有四个“额外”的 0 在一侧。

我需要重命名一个文件夹中的所有文件,以便名称匹配。有没有办法在循环中做到这一点?感谢您的帮助。

【问题讨论】:

  • 所以您希望文件夹中的所有.txt 文件重命名,以便数字部分始终在左侧填充零以使其总共有 5 位宽?
  • @MarkSetchell 是的,我希望两个文件夹具有相同的名称[它们不相同,但一个是另一个的翻译,因此它们必须匹配才能进行下游分析],因此每个文件都必须相应地添加 0。

标签: bash file for-loop file-rename batch-rename


【解决方案1】:

你应该看看perl-rename(有时称为rename)不要与rename from util-linux混淆。

perl-rename 's/\d+/sprintf("%05d", $&)/e' *.txt

上述脚本会将目录中的所有.txt文件重命名为:

A1.txt       -> A00001.txt
A10.txt      -> A00010.txt
Hello225.txt -> Hello00225.txt

Test it Online

【讨论】:

  • @MarkSetchell 谢谢,但不清楚 OP 真正想要什么。希望这将帮助他们开始:-)
  • 对于阅读本文的任何碰巧在 OSX 上的人,您可以使用brew install rename 安装homebrew 中提到的工具。
  • @MarkSetchell perl-rename 很酷,它甚至会为你创建目录:perl-rename 's~.*~a/b/c/$&~' * a/b/c
  • 实际上我只是在研究它的联机帮助页 - 如果两个文件名称相同,它不会覆盖文件 - 非常好。
猜你喜欢
  • 2021-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-14
  • 1970-01-01
  • 2017-06-18
相关资源
最近更新 更多