我有一个文件夹,里面有大约 300 张图片,每张图片都是 300x300 像素,它们是艺术家的图片。在该文件夹中,我创建了另一个名为60
.
我想将每个图像的大小调整为 60x60 像素,通过附加-60
到文件名称来重命名文件并将其移动到/60
文件夹中。
所以想象我有一个名为 的图像bob-dylan.jpg
,我想要调整大小,然后重命名为bob-dylan-60.jpg
,然后移动,以便它位于/60/bob-dylan-60.jpg
.
我试图通过自己编写一个 shell 脚本来做到这一点batch-resize.sh
。我已经使脚本成为可执行文件。该脚本尝试使用 ImageMagick。这是我到目前为止所拥有的。
批量调整大小.sh
#! /bin/bash
for f in /mnt/c/Users/jwan/Pictures/bejebeje-artist-images/*; do
mogrify -path /mnt/c/Users/jwan/Pictures/bejebeje-artist-images/60 -resize 60x60 $f
done
这会调整图像大小并将它们移动到/60
目录,但不会重命名文件。我真的在为重命名而苦苦挣扎。
我确实在网上搜索%
,但看到了很多符号,但没有任何解释。
如果有人能告诉我如何在我必须重命名文件的基础上进行构建,并解释如何实现重命名,我将不胜感激。
执行此为bash scriptname /path/to/files
:
#!/bin/bash
for f in "$1"/*.{jpg,png}; do
[ -f "$f" ] || continue
base=$(basename "$f")
convert -resize 60x60 "$f" "$1/60/${base%.*}-60.${base##*.}"
done
如果需要,为大括号添加更多扩展。
convert
接受一个输入文件$f
并将调整其大小的结果放在目录中$1/60
($1
是参数)。
[ -f "$f" ] || continue
如果f
不是常规文件,则跳过该操作。您肯定不想调整目录大小。basename
gets从文件名中删除路径。例如,a/b/c.jpg
变成c.jpg
。${base##*.}
从文件的基本名称中删除最后一个点。因此它得到了扩展。${base%.*}
删除扩展后的所有内容。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句