Как написать сценарий для автоматической оптимизации всех PNG в моей директории изображений MediaWiki?

У меня есть MediaWiki 1.25.2, установленный на моем 64-разрядном компьютере Debian 8.1 VirtualBox, и я хотел бы иметь возможность загружать файлы images/ из этой установки в DropBox. Будучи cheapskate, я пытаюсь свести к минимуму размер этой директории изображений, оптимизируя PNG, найденные в ней, с optipng , так что я не получаю DropBox, настолько полный, что мне нужно заплатить за большее количество хранения. Моя Wiki имеет в настоящее время 182 PNG, которые я загрузил в нее (вместе с более чем сто других, которые представляют собой миниатюры этих оригинальных PNG и SVG, которые у меня есть на моей Wiki), поэтому optipng -o7 <filename> на каждом из этих файлов вручную будет очень утомительно.

Поэтому я здесь спрашиваю, как я могу написать сценарий bash, который автоматически сделает это для меня. Теперь я знаю некоторые части головоломки, как это сделать, например, я знаю, что программа find может генерировать списки файлов с указанным расширением файла в указанном месте (например, при запуске sudo find . -type f -name "*.png" из каталога images/ который для меня находится в /var/lib/mediawiki/images , перечисляет все PNG в нем), но я не знаю, как использовать эту программу для создания текстового файла, содержащего все имена файлов относительно в этот каталог (например, f/f1/Frugalware_Linux_screenshot.png ). Я также не знаю, как получить optipng для оптимизации PNG, перечисленных в текстовом файле.

  • bash, список всех файлов по определенному размеру
  • Напишите текст в последней строке документа
  • Сценарий оболочки с вводом каталога
  • сценарий оболочки заменяет только первую строку в переменной
  • Абортная задача при запуске на Ubuntu 14.04
  • Как достичь «непрерывности случайности»?
  • Игнорировать все совпадения для отрицательного шаблона extglob в рекурсивном ls
  • Файл читается всеми, но я не могу открыть файл
  • 2 Solutions collect form web for “Как написать сценарий для автоматической оптимизации всех PNG в моей директории изображений MediaWiki?”

    Пытаться:

     for i in `find . -type f -name "*.png"` do optipng -o7 "$i" done 

    Не тестировал, но он должен работать так. Если вам нужно протестировать его, вы можете изменить строку optipng -o7 $i с помощью echo $i чтобы узнать, optipng -o7 $i ли вы правильный файл.

    просто используйте здесь:

     find (...your filters ...) -exec optipng -o7 '{}' + 

    обратите внимание, что + попытается использовать как можно больше результатов find качестве аргумента для optipng , что прекрасно, так как эта программа принимает несколько файлов в качестве аргументов. Обратите внимание, что + работает только в том случае, если это последний аргумент команды -exec . Альтернативный вариант

     find (...filters...) -exec optipng -o7 '{}' \; 

    Будет выполнять optipng один раз за результат и, следовательно, намного медленнее.

    Боковое примечание: {} в find означает имя файла, полученное в результате поиска, -exec позволит выполнить команду ececuting.

    Linux и Unix - лучшая ОС в мире.