Как написать сценарий для автоматической оптимизации всех 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, перечисленных в текстовом файле.

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.

  • «. ~ / .bashrc "не устанавливает переменные, как ожидалось, в вызывающем скрипте
  • В чем разница между «==» и «= ~»?
  • Передайте значение для приглашения ввода
  • Переместить скрипт оболочки файла
  • Сетевой ввод-вывод и дисковый ввод-вывод без установки каких-либо или использования сторонних библиотек
  • Почему я получаю разные результаты при запуске моего shellscript вручную, когда я запускаю его с помощью cron?
  • Неблокированный опрос от двух труб?
  • Поиск файла для числа, которое находится между двумя конкретными номерами
  • Передача значений в скрипт
  • Как удалить строку, если она начинается с. или a> с помощью sed?
  • localhost cron issue, log показывает, что cmd запущен, но сценарий фактически не запускался. Что я делаю неправильно?
  • mount -a блокирует мой скрипт, если какой-либо из многих удаленных дисков отключен
  • Linux и Unix - лучшая ОС в мире.