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" "{}";' {} \;