1

印刷したい写真がたくさんありますが、正しく印刷するには、他のすべての写真を水平に反転する必要があります。これで、画像はすべてpngファイルになり、、というラベルが付けられ"Foo 001.png"ます"Foo 002.png"。文字列の数字のある部分を見て、整数に変換し、n%2==0偶数かどうかを確認し、偶数かどうかを反転するだけでよいと考えています。

bashを使用して文字列から整数に変換する便利な方法があるかどうか、または画像を反転するために何を使用するかはわかりません。

4

3 に答える 3

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に印刷したり、ファイル名のシーケンス番号をゼロで埋める必要のない方法でバージョンソートしたりできます。*.jpgls -1v

数千のファイルがある場合は、制限を超えないようにするために、上記の代わりにls(ワイルドカードなし)またはとgrepの組み合わせfindを使用できます。sortARG_MAX

于 2012-11-14T03:56:10.440 に答える
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
于 2012-11-14T03:53:34.053 に答える
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ライブラリの一部です。

于 2012-11-14T03:56:31.550 に答える