我有一个很大的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
但是,这只是返回
>
然后什么也没有发生,任何建议都会很棒。
答案 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特殊变量$_
会用当前文件的名称填充,并且至关重要的是,您应该将其设置为您希望将输入文件重命名为的名称。