Здесь я выкладываю разные полезные советы по работе с Linux.

Сжатие изображений в Linux#

Для уменьшения качества изображений нам понадобится программа mogrify, входящая в состав ImageMagick — набора программ для работы с графикой из консоли.

Пример синтаксиса:

mogrify -resize 1920x -path /путь/к/выходной_папке *.jpg

где: -resize 1920x — новая ширина, равная 1920 пикселей, высота меняется пропорционально -path — путь, куда положить обработанные изображения (лучше не перезаписывать оригиналы)

Также можно еще указывать качество параметром -quality (от 0 (худшее) до 100 (лучшее)). Допустим, нам нужно уменьшить качество всех JPEG (считаем, что качество изначальных изображений высокое) в текущей папке. Для этого создадим папку small (чтобы не перезаписать исходники) и выполним следующую команду:

$ mkdir small
$ mogrify -resize 1920x -quality 80 -path ./small ./*.jpg

В результате получим в папке small изображения с шириной 1920, меньшего качества.

Массовая рекурсивная конвертация всех аудиофайлов в корневой директории в формат .mp3#

  1. Создаём следующий bash-скрипт (например, convert_audio_to_mp3.sh) где-нибудь в директории, в которой находятся аудиофайлы:
find /mnt/storage/04_Media/Music -type f \( -iname "*.flac" -o -iname "*.wav" -o -iname "*.ogg" -o -iname "*.aac" \) \
  -exec bash -c 'for f; do
    out="${f%.*}.mp3"
    ffmpeg -y -i "$f" -q:a 2 "$out" && rm "$f"
  done' bash {} +
  1. Даём права на выполнение:
sudo chmod +x ./convert_audio_to_mp3.sh
  1. Запускаем bash-скрипт:
$ ./convert_audio_to_mp3.sh

Что делает этот скрипт:

  1. Находит рекурсивно все файлы в директориях с форматом из первой строки (можно добавить еще)
  2. Запускает ffmpeg для каждого найденного файла (формат .mp3, качество 2 (где 0 - наилучшее, а 9 - наихудшее))
  3. Удаляет исходные файлы по завершению конвертации!!! Если Вам это не нужно, удалите фрагмент && rm "$f" из скрипта.

То же самое, но для видео:

find /mnt/storage/04_Media/Videos -type f \( -iname "*.mkv" -o -iname "*.avi" -o -iname "*.mp4" \) \
-exec bash -c 'for f; do
    ffmpeg -i "$f" -vf scale=-1:720 -c:v libx265 -crf 28 -c:a aac -b:a 128k "${f%.*}_720p.mp4" && rm "$f"
done' bash {} +

И не забудьте удалить && rm "$f", если Вам не нужно стирать исходники!