Encontre imagens em um diretório Linux com base em sua resolução [closed]

0

Eu gostaria de escanear todas as imagens em um diretório linux (recursivamente dentro de subpastas) e encontrar aquelas com resolução maior que um limite específico (por exemplo, dizer aquelas com resoluções de pelo menos 800x600 ou, se mais fácil, dizer com largura superior a 1000 pixels). Em seguida, gostaria de registrar seu endereço em um arquivo .txt , acompanhando sua resolução (ou [width], [height] para uma melhor formatação).

Como posso fazer isso no script bash? Tenho que digitalizar milhões de imagens.

    
por Tina J 22.06.2018 / 21:02

1 resposta

2

O script abaixo, que usa ImageMagick 's identify - pesquisará recursivamente o diretório especificado para todos os arquivos que terminarem com .jpg , .jpeg , .png e .gif e, em seguida, pesquisará por aqueles para imagens que relatório sendo mais de 800 x 600.

#!/bin/bash

if [ -z $1]; then
  echo -e $0 '[path to search]\nRecursively search the specified directory for images over 800x600'

else

  find $1 \( -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.gif" \) -type f -exec identify -format '%w %h %i' '{}' \; | awk '$1>800 || $2>600'

fi
    
por 23.06.2018 / 01:56