奇妙な状況になってしまいました。フォルダが 35 個あります。最初のフォルダは 1、2 番目のフォルダは 2 というように名前が付けられています。これらのフォルダにはそれぞれ 4 つのファイルがあります。'1.png'、'2.png'、'3.png'、'4.png'。これらのフォルダのそれぞれで、「convert *.png -append out.pdf」を実行し、各 'out.pdf' の名前を元のディレクトリ (たとえば、最初のフォルダの 'out1.pdf') に変更してから、各 pdf を元のフォルダから解凍します。これは可能ですか? ループを試しましたが、試したものはすべて命名システムと一致しないようです。
答え1
次のようなことを試してください:
#!/bin/sh
for dir in $(seq 1 35)
do
(
cd $dir || exit 1
rm -f out$dir.pdf
for n in 1 2 3 4
do
convert $n.png -append out$dir.pdf || exit 2
done
)
done
このスクリプトは POSIX に準拠しており、 を必要としませんbash
。そのため、 となります#!/bin/sh
。
括弧内のコードはサブシェルで実行されるため、cd
コマンドは閉じ括弧までのディレクトリのみを変更します。ループの次の反復は元の作業ディレクトリで開始されます。
あなたの例では、 の構文がconvert
間違っていると思います。Convert は 1 つの入力ファイルのみを受け取りますが、元の質問では は*.png
4 つの入力ファイルを渡します。おそらく、それが問題の一部です。