PDFファイルの一括トリミングのためのbashスクリプト

PDFファイルの一括トリミングのためのbashスクリプト

私のディレクトリに複数のPDFファイルがあります。 PDFライブラリを活用して、特定のページを新しいファイル(別々の出力フォルダ)に保存したいと思います。

最良のアプローチは何ですか?

これは私が書いたコードですが、より多くの追加が必要です。

#!/bin/bash
# Saves 1st 4 pages or every pdf file to a new file.

for i in *.pdf; do


pdfcpu trim -pages "1-4" ${i}.pdf output ${i + %}.pdf


done

このコードは機能しませんが、このレベルまで来ました。私の質問、

  1. 各ファイルを繰り返す方法
  2. 最初の4ページだけを別のフォルダに保存してください。

私が使っているライブラリはCPU具体的にそのtrim機能

答え1

あなたは近いです。

#! /bin/bash -

shopt -s nullglob

mkdir -p trimmed || exit

ret=0
for file in ./*.pdf; do
  pdfcpu trim -pages 1-4 "$file" "trimmed/$file" || ret="$?"
done
exit "$ret"
  • ./globを使用するとき。で終わらないようにプレフィックスを使用するのが最善です-
  • Bash / shでは、パラメータ拡張を引用する必要があります。
  • Bash / shでglobが一致しない場合、パターンはそのままコマンドに渡されます。 Bashでは、この機能を使用してshopt -s nullglob(またはfailglob他の効果を使用して)このエラーを解決できます。
  • $iループに.pdf拡張子を含む完全なファイル名を含めます。を使用すると、${i}.pdf2つの拡張子が作成され、pdfcpuそのfile.pdf.pdfファイルが見つかりません。
  • ${i + %}無意味。これで何を達成したいのか明確ではありません。$file==の出力ファイル名をfile.pdfとして指定するには、それを出力ファイルパスに渡すtrimmed/file%.pdfことができます。"trimmed/${file%.pdf}%.pdf"
  • ~によると手動、そこにはいけませんoutput
  • 失敗に注意を払い、失敗が発生した場合に何をすべきかを覚えておいてください。ここでpdfcpuコマンドが失敗すると、残りのコマンドは引き続き実行されますが、スクリプトの終了ステータスに失敗を報告します。

関連情報