imagemagickがサブディレクトリにファイルが見つかりません

imagemagickがサブディレクトリにファイルが見つかりません

この行は各サブディレクトリに移動し、その中の各画像をサブディレクトリと同じ名前のpdfにマージしてから親ディレクトリに移動する必要があります。

for d in ./*/ ; do (cd "$d" && convert *.jpg(n) "$d.pdf" && mv $d.pdf .); done

これはエラーです。

zsh: no matches found: *.jpg(n)
zsh: no matches found: *.jpg(n)
convert: unable to open image './dir/-0': No such file or directory @ error/blob.c/OpenBlob/3497.

ベストアンサー1

./*/globを使用しているので、次$dの内容が含まれて./dir/実行されますconvert *.jpg(n) ./dir/.pdf && mv ./dir/.pdf .。また.、これは現在のディレクトリではない(今すぐ..)。

ここでは、次のようなものが欲しい:

for dir (./*(/)) (convert $dir/*.jpg(n) $dir.pdf)

ここで私たちは使用しています(/) グローバル予選ファイル形式の選択目次(-/)(また含めるには、次のように変更します。ディレクトリへのシンボリックリンクあなたの方法と同じです*/)。

隠されていないjpgファイルがないディレクトリの場合、エラーが発生しますが、サブシェルを使用しているため、サブシェルのみが終了します。

エラーを回避するには、まずjpgファイルがあることを確認してください。たとえば、次のようになります。

for dir (./*(/)) {
  files=($dir/*.jpg(Nn)) # N for nullglob
  (($#files == 0)) || convert $files $dir.pdf
}

または匿名関数を使用してください。

for dir (./*(/)) (){(($# == 0)) || convert $* $dir.pdf} $dir/*.jpg(Nn)

おすすめ記事