重命名 Jpeg 的大文件夹

Rename large folder of Jpegs

我有一个很大的 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”, [=10=], x++ }' | bash

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

然而,这只是返回

>

然后什么也没发生,有什么建议就好了。

您可以使用 bash 脚本来做到这一点。假设您在名为 rename_images.

的文件中包含以下内容
#!/bin/bash
declare -a FILESERIES

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

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

要完成您需要的工作,运行 文件夹中的脚本以及所有图像如下:

./rename_images '*.jpg' image .jpg

你应该被分类。

最简单的方法是使用 rename,您可以使用 homebrew 安装它:

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 实际执行它,而不仅仅是告诉您它会做什么。


如果你想要你的名字 zero-padded,最简单的方法是让 rename 像这样自动计算出你需要多少填充:

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

使用 rename 的好处是:

  • 简单而强大
  • 它会在覆盖任何文件之前警告您
  • 它可以干 运行 并告诉你什么都不做就告诉你会发生什么

如果您想要命令的解释 '$_ = "$N"' 然后继续阅读...

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