按特定顺序重命名图像

这是我的问题:我有一个包含500张图像的文件夹:

1.jpg 2.jpg 3.jpg 

等等..

我复制了该文件夹,现在我需要将这些相同的图片从501重命名为1000,但按顺序如下:

 1.jpg becomes 501.jpg 2.jpg becomes 502.jpg 3.jpg becomes 503.jpg .... 

当我使用标准重命名命令时:

 i=501;for img in $(find . -iname '*.jpg'); do echo -n "Converting $img"; mv $img $i.jpg && echo $i && ((i++)); done 

它将图像从501订购到1000但它们都是分散的:

 23.jpg becomes 501.jpg, 66.jpg becomes 502.jpg ... 

(它们是正确的顺序,但它混合起来)

我知道这可能是我失踪的一个命令……

尝试Thunar ,这是Xfce的默认文件管理器。 它非常轻巧,并配有方便的批量重命名工具。 您可以通过在终端中运行以下命令来安装Thunar:

 sudo apt-get install thunar 

您也许可以从Ubuntu软件安装。

如何使用该实用程序

  1. 安装Thunar后,启动批量重命名实用程序。
  2. 单击+图标,然后按正确的顺序添加要重命名的文件。
  3. 单击所选文件列表下方的下拉框,然后选择编号 。 单击旁边的框,然后选择仅名称
  4. 在“ 开始于: ”框中输入501,将“ 文本: ”框保留为空。 您应该在“ 新名称”列中看到更改的预览。
  5. 要应用更改,请单击“ 重命名文件”按钮。

除了编号,此实用程序还支持以下操作:

  • 插入日期/时间
  • 插入/覆盖
  • 删除字符
  • 搜索和替换
  • 大写小写

find命令以’directory’顺序查找文件( 23.jpg66.jpg ,…)。 你可以在查找之后放一个|sort

但是你的方法过于复杂。

 for i in $( seq 1 500 ) ; do j=$(( $i + 500 )) mv $i.jpg $j.jpg done 

使用rename命令。

 rename -n 's/^(\d+)/sprintf("%d",$1+500)/e' *.jpg 

或者在纯bash使用shell参数扩展 。

 for FILE in *.jpg; do mv "$FILE" "$(( ${FILE%.jpg}+500 )).jpg" done 

如果我已经理解了你正确的问题,我认为你可以使用默认的重命名工具:

 rename 's/^(\d+)/sprintf("%d",$1+500)/e' *.jpg -vn 

您应该在测试后删除-vn (详细 – 无操作)开关,以使更改生效。

使用shell命令实现此目的的另一种方法

count = 1;对于l in ls ; 做mv $ i CN $((count ++))。$ {i ## *。}; DONE