在终端上大规模重命名并按顺序编号

时间:2013-01-08 21:15:49

标签: linux bash rename gnu mv

我想重命名很多文件(一些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制作它?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

以下是使用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脚本渲染器。但是你已经可以测试系统了。