我有一堆我想要打印的图片,但为了让它们正确打印,每个其他图片都需要水平翻转。现在,图片都是png文件,标记为"Foo 001.png"
,"Foo 002.png"
。我想我需要做的就是查看具有数字的字符串部分,将其转换为整数,执行n%2==0
检查是否为偶数,如果是偶数则翻转它。< / p>
我不知道是否有一种方便的方法可以使用bash或者用来翻转图片的方式将字符串转换为整数。
答案 0 :(得分:2)
使用切换变量翻转列表中的所有其他图像。
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
to version-sort them,这种方式不需要文件名中的序列号零填充。
如果有数千个文件,则可以使用ls
(无通配符)和grep
或find
和sort
之一的组合代替上述文件为了避免超出ARG_MAX
限制。
答案 1 :(得分:1)
由于字符串比数字更好bash,我的第一个想法是
flip Foo\ *{0,2,4,6,8}.png
其中flip
是您用来翻转图片的任何命令。
这假设该命令可以接受多个文件名。如果没有,您可以使用循环:
for f in Foo\ *{0,2,4,6,8}.png; do flip "$f"; done
答案 2 :(得分:1)
如果我理解得很好,你想要翻转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库的一部分。