如何按顺序批量重新编号文件?

时间:2013-12-12 14:42:30

标签: ruby bash batch-processing

我有一系列图像文件,如下所示:

image-149454.jpg
image-149455.jpg

我还有一些其他想要附加到序列末尾的图像,但目前它们从0开始编号(即image-000000image-010000)。

我可以使用什么脚本重命名这些新图像从某个数字开始并继续,在本例中为149456及以后?

3 个答案:

答案 0 :(得分:0)

我会尝试这样的事情。您只需调整偏移量并在名称前面添加一个字符串,就像您需要的那样。

x=1
for i in *.jpg; do
    temp=$(printf "%08d.jpg" ${x}) #padding since you seem to want it
    mv ${i} ${temp}
    let x=x+1
done

答案 1 :(得分:0)

这是Python中未经测试的解决方案。这应该更改目录中的所有文件,使其顺序的数字比另一个更高。

要使用它,请输入:script.py dir1 dir2

假设原始文件的编号较大(149455)在dir1中,而新文件从000000开始在dir2中:

import os, sys, re

max_image = 0
# check if current (with higher numbers) and other (with lower) directory is given
if len(sys.argv) == 3:
    for files in os.listdir(sys.argv[1]): # first dir is current
        if files.endswith(".jpg"):
            #for all jpgs get the max
            m = re.search("\-(\d+)", files)
            number = int(m.group(1))
            if max_image < number:
                max_image = number

    for files in os.listdir(sys.argv[2]): # second dir is other
        if files.endswith(".jpg"):
            #get current start point
            m = re.search("\-(\d+)", files)
            number = int(m.group(1))
            os.rename(files, "image-" + str(number + max_image)+".jpg") # add the max from current folder

答案 2 :(得分:0)

这是一个纯粹的bash解决方案,它使用最后一个图像序列作为起点(根据您的要求):

#!/bin/bash
last_seq=$(ls image-* | tail -1 | sort -n | cut -c7-) # grab the sequence number
last_seq=${last_seq%.jpg} # remove the trailing .jpg
if [ -z $last_seq ] ; then
  echo "Unable to obtain the last image sequence number"
  exit 1
fi
for image in image-0*.jpg ; do
   [ -f ${image} ] || break  # In case no files match image-0*.jpg
   let last_seq=last_seq+1
   mv -v ${image} image-$(printf "%06d.jpg" ${last_seq})
done

以下是它在当地的运作方式:

跑步前

~/tmp › ls -l
total 80
-rw-r--r-- 1 dyoung staff     0 Dec 12 10:20 image-00000.jpg
-rw-r--r-- 1 dyoung staff     0 Dec 12 10:20 image-01000.jpg
-rw-r--r-- 1 dyoung staff     0 Dec 12 10:05 image-14908.jpg
-rw-r--r-- 1 dyoung staff     0 Dec 12 10:05 image-14909.jpg
-rw-r--r-- 1 dyoung staff     0 Dec 12 10:05 image-14910.jpg
-rw-r--r-- 1 dyoung staff   418 Dec 12 10:24 testh.sh

在跑步期间:

~/tmp › sh ./testh.sh
image-00000.jpg -> image-14911.jpg
image-01000.jpg -> image-14912.jpg
运行后

~/tmp › ls -l
total 80
-rw-r--r-- 1 dyoung staff     0 Dec 12 10:05 image-14908.jpg
-rw-r--r-- 1 dyoung staff     0 Dec 12 10:05 image-14909.jpg
-rw-r--r-- 1 dyoung staff     0 Dec 12 10:05 image-14910.jpg
-rw-r--r-- 1 dyoung staff     0 Dec 12 10:20 image-14911.jpg
-rw-r--r-- 1 dyoung staff     0 Dec 12 10:20 image-14912.jpg
-rw-r--r-- 1 dyoung staff   429 Dec 12 12:25 testh.sh