Для пересылки по электронной почте мне понадобилось оптимизировать размер некоторого количества jpeg-файлов.
В ubuntu linux сделать это можно с помощью утилиты jpegoptim. Она позволяет как оптимизировать размер без потери качества, так и с потерей качества, указав его необходимый уровень.
Устанавливаем:

sudo apt-get install jpegoptim

Проверяем, насколько можно сжать файл:

jpegoptim -n file.jpg

Сжимаем один файл без потери качества:

jpegoptim file.jpg

Утилита сожмет и перезапишет файл. Если сжимать дальше уже невозможно, то файл будет пропущен.
Можно избежать перезаписи исходного файла, указав директорию для сохранения оптимизированных файлов:

jpegoptim -d ./optimized file.jpg

Сохранить аттрибуты файла (дата/время создания файла) можно, указав опцию -p:

jpegoptim -d ./optimized -p file.jpg

Сжать файл с потерей качества можно, указав опцию -mNN:

jpegoptim -m50 file.jpg

В результате файл будет оптимизирован по размеру с 50% потерей качества.

Оптимизировать по размеру все файлы jpg в папке можно с помощью однострочного цикла:

for i in *.jpg; do jpegoptim -d ./compressed -p "$i" ; done

Рекурсивно:

find /home/valusik/Изображения/ -type f -iname *.jpg -exec jpegoptim -p --all-progressive {} +