Автоматизация пережатия pdf файлов

Задача: есть некоя файловая помойка, размер которой вырос до неприличных размеров. Необходимо pdf файлы пережать до «еле читабельного» состояния.

Решение: напишем соответствующий скрипт на Bash

#! /bin/bash
from='2025-01-15'
to='2025-01-17'

find ~/wedwewe -type f -newermt "$from" ! -newermt "$to" -name "*.pdf" | while read fname; do
  echo "-compress: $fname"
  gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=res.pdf "$fname"
  if [ $? -eq 0 ]; then
    echo OK
    mv res.pdf "$fname"
  else
    echo FAIL
  fi
done

Что делает этот скрипт? А просто ищет все файлы созданные в указанном диапазоне дат. Далее последовательно пытается пережать каждый файл, и если это происходит успешно, то заменяет оригинал на получившийся пережатый файл. Опции dPDFSETTINGS:

/screen Более низкое качество и меньший размер. (72 т/д)
/ebook Лучшее качество, но чуть больший размер (150 dpi)
/prepress Вывод имеет более высокий размер и качество (300 dpi)
/printer Качество вывода подходит для принтерной печати (300 dpi)
/default Выбирает вывод, который подходит для нескольких целей, однако может создавать большие PDF-файлы.

Update: со временем скрипт чуть изменился. А именно добавил проверку «а помогло ли сжатие». Если эффекта нет, то и не заменяем пережатый файл

#! /bin/bash
from='2025-01-13'
to='2025-01-17'

find ~/shwedwed -type f -newermt "$from" ! -newermt "$to" -name "*.pdf" | while read fname; do
  echo "-compress: $fname"
  gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -sColorConversionStrategy=Gray -dProcessColorModel=/DeviceGray -dNOPAUSE -dQUIET -dBATCH -sOutputFile=res.pdf "$fname"
  if [ $? -eq 0 ]; then
    echo OK
    size_before=$(wc -c <"$fname")
    size_after=$(wc -c <"res.pdf")
    if [[ $size_before -gt $size_after ]]
	then 
	    echo "-результат сжатия хороший. Заменяем файл..."
	    mv res.pdf "$fname"
	else 
	    echo "-сжатие не удачное, пропускаем.."
    fi
  else
    echo FAIL
  fi
done