【问题标题】:massive rename on terminal and sequentially numbered在终端上大量重命名并按顺序编号
【发布时间】:2012-12-22 20:20:54
【问题描述】:

我想重命名很多文件(一些 jpg 和很多 png 文件)我需要它们在每个文件夹上按顺序编号有这样的结构:

.../folder01
    file.png
    file.jpg
.../folder02
    file.png
    file.png
  ..........
.../folder05
    file.png
    file.png

我想要这样的东西:

.../folder01
    0001.jpg
    0002.png
.../folder02
    0003.png
    0004.png
  ..........
.../folder05
    0012.png
    0013.png      

如何使用 bash 来实现?

【问题讨论】:

    标签: linux bash rename gnu mv


    【解决方案1】:

    这是使用StringSolver自动化工具的另一种方式:

    mv folder01/file.jpg folder01/0001.jpg
    mv folder01/file.png folder01/0002.png
    mv
    

    需要第二个示例,否则它会考虑使用文件夹名称中的数字重命名所有文件。 最后两行也可以简写为一行,它执行动作并立即将其概括:

    mv -a folder01/file.png folder01/0002.png
    

    免责声明:出于学术目的,我是该作品的合著者,并且正在开发 bash 脚本渲染器。但是您已经可以对系统进行测试了。

    【讨论】:

      【解决方案2】:

      这是一种方法:

      find . \( -name '*.jpg' -o -name '*.png' \) -print  | (i=0; while read f; do 
          let i+=1; mv "$f" "${f%/*}/$(printf %04d "$i").${f##*.}"; 
      done)
      

      【讨论】:

      • 非常感谢!这很棒!就一件事。在我测试(文件夹 01 02 03)的情况下,次要数字在最后一个文件夹中: 01 --> 0006.png 0005.png 和 03 --> 0001.png 0002.png ,我想要相反的。
      • 添加一个sort: find ... -print | sort | (i=0; ... 文件将在编号之前进行排序,因此folder01将排在folder02之前,等等。
      猜你喜欢
      • 2011-04-16
      • 2014-04-22
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-10
      • 1970-01-01
      • 2020-08-31
      • 2014-11-25
      相关资源
      最近更新 更多