すべてのPDFファイルを再帰的に圧縮

すべてのPDFファイルを再帰的に圧縮

Ghostscriptを使用して、特定のディレクトリとサブディレクトリにあるすべてのPDFファイルを圧縮したいと思います。

findファイル名(スペースを含む)ごとにループ内でコマンドを使用するのをやめました。

私が望むサンプルコードは次のとおりです。

pdffiles=$(find /path/to/directory -type f -name *.pdf)
for file in pdffiles; do
  gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -dQUIET -sOutputFile=new_$file $file; 
  rm $file;
  mv new_$file $file;
done;

スペースの問題を解決する方法をご存知ですか?もっと良い方法がありますか?

ベストアンサー1

1行のスクリプトもオプションです。

find -type f -name "*.pdf" -exec bash -c 'gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -dQUIET -sOutputFile="new.pdf" "{}"; rm "{}"; mv "new.pdf" "{}";' {} \;

おすすめ記事