我有一堆要打印的图片,但是为了让它们正确打印出来,其他每张图片都需要水平翻转。现在,这些图片都是 png 文件,并标有"Foo 001.png"
, "Foo 002.png"
. 我在想我需要做的就是查看字符串中包含数字的部分,将其转换为整数,n%2==0
检查它是否是偶数,如果是偶数则翻转它。
我不知道是否有一种方便的方法可以使用 bash 从字符串转换为整数,或者我会用什么来翻转图片。
我有一堆要打印的图片,但是为了让它们正确打印出来,其他每张图片都需要水平翻转。现在,这些图片都是 png 文件,并标有"Foo 001.png"
, "Foo 002.png"
. 我在想我需要做的就是查看字符串中包含数字的部分,将其转换为整数,n%2==0
检查它是否是偶数,如果是偶数则翻转它。
我不知道是否有一种方便的方法可以使用 bash 从字符串转换为整数,或者我会用什么来翻转图片。
使用切换变量翻转列表中的所有其他图像。
X=0
cat filenames | while read -r filename ; do
if [ $X -eq 1 ] ; then
# flip $filename
fi
# print $filename
X=$((1-$X))
done
您可以将cat filenames
上面替换ls -1 *.jpg
为按字母顺序打印*.jpg
文件,或ls -1v
对它们进行版本排序,这种方式不需要将文件名中的序列号补零。
如果有数千个文件,可以使用ls
(无通配符)和/或andgrep
之一的组合来代替上述文件,以避免超出限制。find
sort
ARG_MAX
如果我理解得很好,你想翻转 1/2 png 图像吗?如果是,那么:
convert -flip "Foo *{0,2,4,6,8,10}.png"
或者如果您有太多文件:
# making an array of files
files=( *.png )
# C style for loop (iterating 2 by 2)
for ((i=0; i< ${#files[@]}; i+=2)) {
# fliping the image
convert -flip "${files[i]}"
}
convert 命令是著名的imagemagick库的一部分。
由于 bash 使用字符串比使用数字好得多,所以我的第一个想法是
flip Foo\ *{0,2,4,6,8}.png
flip
您用来翻转图片的命令在哪里。
这假设该命令可以接受多个文件名。如果没有,您可以使用循环:
for f in Foo\ *{0,2,4,6,8}.png; do flip "$f"; done