Você pode usar identify
from imagemagick
e você pode usar o seguinte comando:
find . -iname "*.jpg" -type f -exec identify -format '%w %h %i' '{}' \; | awk '$1<300 || $2<300'
o uso de -exec <command> '{}' \;
garante que seu nome de arquivo possa ter espaços, ou você pode usar
find . -iname "*.jpg" -type f | xargs -I{} identify -format '%w %h %i' {} | awk '$1<300 || $2<300'
onde o -I{}
cuida da mesma coisa.
O que eu gosto identify
é que você pode especificar o formato de saída; neste caso, '%w %h %i'
que fornece a largura, altura e nome do caminho completo da imagem. Em seguida, a awk
expressão mantém apenas as linhas para as quais a imagem é menor que o tamanho desejado.
Exemplo da saída:
64 64 ./thumbsup.jpg
100 150 ./photomin.jpg
Editar: se você deseja apenas os nomes dos arquivos (para canalizar, rm
por exemplo), basta alterar $line
a awk
instrução para $3
, então ela imprimirá apenas a terceira coluna.
| awk '$1<300||$2<300'
ou| awk '$1<300||$2<300{print $3}'
(quando apenas a terceira coluna for necessária).