Я думаю mogrify
систематически переписывает файл, таким образом, Ваша единственная надежда состоит в том, чтобы отфильтровать список сначала, как предложено jippie. Вот то, как Вы могли бы сделать (непротестированный): распечатайте список файлов изображений с признаком размера, сохраните только имена, связанный размер которых в диапазоне, и обработайте тот список.
identify -format '%w %h %i\n' ./*.png |
awk '$1 > 400 || $2 > 400 {sub(/^[^ ]* [^ ]* /, ""); print}' |
tr '\n' '\0' |
xargs -0 mogrify -resize '400x400'
Объяснение сценария:
identify
, \n
добавить заключительную новую строку может или быть необходимым (ImageMagick 6.6.0) или лишним, но безопасным (GraphicsMagick 1.1.11).awk
) На каждой строке, если ширина ($1
) и высота ($2
) соответствуйте необходимым условиям, затем: xargs -0
выполниться mogrify
команда на именах файлов. (Мы не можем использовать плоскость xargs
потому что это не может иметь дело с входом, содержащим пробел или \'"
.)Имена файлов могут содержать любой символ кроме новых строк.
Awk является частью POSIX и Единственного Unix (и был, так как они существуют). Это также было частью классического Unix в течение очень долгого времени и установлено по умолчанию на каждом современном законченном Unix.
Awk является несколькими годами, моложе, чем Unix, так очевидно, были версии Unix без Awk. Awk появился в V7 и в BSD начиная с первого полного выпуска. MINIX 2 имел awk; я не уверен, имели ли несколько систем на основе MINIX 1 все его.
Существуют упрощенные нельды сегодня без Awk — главным образом встроенные системы, запускающие Linux с BusyBox. BusyBox действительно имеет команду awk, но это является дополнительным, как почти все в BusyBox.
Как социологический вопрос, если кто-то говорит Вам, что у них есть “система Unix” или “система Linux” (или варианты этого), можно безопасно предположить, что у них есть awk. Необходимо только волноваться о доступности awk, если Вам говорят, что они выполняют старинную систему или упрощенную систему.
Страница Википедии AWK указывает это следующим образом:
выборка
Как один из ранних инструментов для появления в Unix Версии 7 это завоевало популярность, поскольку способом добавить вычислительные опции к конвейеру Unix и помимо Оболочки Bourne является единственный язык сценариев, доступный в стандартной среде Unix. Это - одна из обязательных утилит Единственной Спецификации UNIX; требуемый Стандартом Linux Основная спецификация — и реализации AWK существует почти для всех других операционных систем.
Учитывая это я сказал бы, что нет версии UNIX, который обходится включая AWK.
Вот то, где это может войти в серую область. Приложения как Busybox включают подмножество функций awk, таким образом, трудно квалифицировать, включено ли это или нет.
Посмотрите то, что включено в Android APK, например:
В установках Solaris для «малых серверов» нет Awk, совместимого с POSIX -.
Технически это означает, что они не POSIX и не UNIX, но вполне возможно, что вы захотите, чтобы ваш сценарий работал на этих системах.
Дополнительную информацию см. в :
.
awk
включенный с Android BusyBox APK? – DVK 10.07.2013, 01:24