Bulk Redimensionar imagens em sub-diretórios com o Imagemagick

0

Estou tentando redimensionar todas as imagens em um diretório e subdiretórios. Eu tenho este script que eu tenho aqui: Use mogrify para redimensionar arquivos grandes, ignorando os pequenos

e ajustado para:

identify -format '%w %h %i\n' ./*.jpg |
awk '$1 > 1200 || $2 > 1200 {sub(/^[^ ]* [^ ]* /, ""); print}' |
tr '\n' '
identify -format '%w %h %i\n' ./*.jpg |
awk '$1 > 1200 || $2 > 1200 {sub(/^[^ ]* [^ ]* /, ""); print}' |
tr '\n' '%pre%' |
xargs -0 mogrify -resize '1200x1200'
' | xargs -0 mogrify -resize '1200x1200'

mas apenas o diretório atual e apenas as extensões .jpg - ignora as maiúsculas - .JPG

Eu tentei fazer ajustes, mas não progredimos muito.

    
por mmc501 15.08.2017 / 10:00

1 resposta

3

Você pode combinar identify com find , por exemplo:

find . -type f -iname "*.jpg" -exec identify -format '%w %h %i\n' {} \;

que executará o comando identify para cada arquivo recursivamente encontrado com o nome terminando em .jpg (sem distinção entre maiúsculas e minúsculas).

Usando seu exemplo completo:

find . -type f -iname "*.jpg" -exec identify -format '%w %h %i\n' {} \; |
awk '$1 > 1200 || $2 > 1200 {sub(/^[^ ]* [^ ]* /, ""); print}' |
tr '\n' '
find . -type f -iname "*.jpg" -exec identify -format '%w %h %i\n' {} \;
' | xargs -0 mogrify -resize '1200x1200'
    
por 15.08.2017 / 10:08