重命名Jpegs的大文件夹

时间:2019-06-12 16:54:11

标签: jpeg

我有一个很大的jpeg文件夹,我想依次将其重命名为image01.jpg,image02.jpg ... image533jpg等。

我尝试使用以下

find ‘/myImages/‘ -maxdepth 1 -name ‘*.jpg’ | sort -n | awk 'BEGIN{ x=1 }{printf "mv \"%s\" \”/myImages/image%04d.jpg\”\n”, $0, x++ }' | bash

我从这里得到的:http://www.algissalys.com/how-to/how-to-quickly-rename-modify-and-scale-all-images-in-a-directory-using-linux

但是,这只是返回

>

然后什么也没有发生,任何建议都会很棒。

2 个答案:

答案 0 :(得分:1)

您可以使用bash脚本来做到这一点。假设您在名为rename_images的文件中具有以下内容。

#!/bin/bash
declare -a FILESERIES

FILESERIES=(`ls $1`)
NUM=${#FILESERIES[@]}
NEWNAME=$2
EXT=$3

for (( i=0; i<$NUM ; i++))
do
    FI=${FILESERIES[$i]}
    NEWFILENAME=`echo $NEWNAME$i$EXT`
    mv $FI $NEWFILENAME
done

要执行所需的操作,请从包含所有图像的文件夹中运行脚本,如下所示:

./rename_images '*.jpg' image .jpg

应该对您进行排序。

答案 1 :(得分:1)

最简单的方法是使用rename,您可以使用以下方式安装自制软件

brew install rename

然后,您可以进入包含图像的目录并运行:

rename --dry-run -X -e '$_ = "$N"' *jpg

示例输出

'a.jpg' would be renamed to '1.jpg'
'article.jpg' would be renamed to '2.jpg'
'blob-0.jpg' would be renamed to '3.jpg'
'blob-1.jpg' would be renamed to '4.jpg'
'blob-2.jpg' would be renamed to '5.jpg'
'blob-3.jpg' would be renamed to '6.jpg'

如果看起来正确,则可以在没有--dry-run实际运行的情况下再次运行它,而不仅仅是告诉您它将做什么。


如果您想将姓名填充零,最简单的方法是让rename像这样自动计算所需的填充量:

rename --dry-run -X -N ...01 -e '$_ = "$N"' *jpg

使用rename的好处是:

  • 它简单而强大
  • 它将在覆盖任何文件之前警告您
  • 它可以进行空运行并告诉您会发生什么而无需实际进行任何操作

如果要解释命令'$_ = "$N"',请继续阅读...

rename命令实际上是一个Perl脚本,因此我上面提到的部分只是一个用单引号引起来的Perl脚本。 $N只是一个Perl变量,它扩展为一个顺序递增的数字。在执行您的小型Perl脚本之前,Perl特殊变量$_会用当前文件的名称填充,并且至关重要的是,您应该将其设置为您希望将输入文件重命名为的名称。