翻转目录中的每个其他图片

时间:2012-11-14 03:47:07

标签: bash

我有一堆我想要打印的图片,但为了让它们正确打印,每个其他图片都需要水平翻转。现在,图片都是png文件,标记为"Foo 001.png""Foo 002.png"。我想我需要做的就是查看具有数字的字符串部分,将其转换为整数,执行n%2==0检查是否为偶数,如果是偶数则翻转它。< / p>

我不知道是否有一种方便的方法可以使用bash或者用来翻转图片的方式将字符串转换为整数。

3 个答案:

答案 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(无通配符)和grepfindsort之一的组合代替上述文件为了避免超出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库的一部分。