按特定顺序重命名图像
这是我的问题:我有一个包含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软件安装。
如何使用该实用程序
- 安装Thunar后,启动批量重命名实用程序。
- 单击+图标,然后按正确的顺序添加要重命名的文件。
- 单击所选文件列表下方的下拉框,然后选择编号 。 单击旁边的框,然后选择仅名称 。
- 在“ 开始于: ”框中输入501,将“ 文本: ”框保留为空。 您应该在“ 新名称”列中看到更改的预览。
- 要应用更改,请单击“ 重命名文件”按钮。
除了编号,此实用程序还支持以下操作:
- 插入日期/时间
- 插入/覆盖
- 删除字符
- 搜索和替换
- 大写小写
find
命令以’directory’顺序查找文件( 23.jpg
, 66.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