Isso moverá todos os arquivos jpg, png ou gif da dimensão 1920x1080 do diretório atual para targetdir :
#!/bin/bash
shopt -s nullglob
for fname in *.jpg *.png *.gif
do
read width height < <(exiv2 "$fname" 2>&1 | awk '/^Image size/{print $4,$6}')
[ "$width" ] || continue
[ "$width" -eq 1920 ] && [ "$height" -eq 1080 ] && mv "$fname" targetdir/
done
Isso examina o diretório atual e exclui todas as imagens de jpg, png ou gif com largura menor que 1600:
#!/bin/bash
shopt -s nullglob
for fname in *.jpg *.png *.gif
do
read width height < <(exiv2 "$fname" 2>&1 | awk '/^Image size/{print $4,$6}')
[ "$width" ] || continue
[ "$width" -lt 1600 ] && rm "$fname"
done
Isso usa o tamanho da imagem de captura do utilitário exiv2 . Em um sistema parecido com o Debian, exiv2 pode ser instalado executando apt-get install exiv2 . Com pequenas modificações, utilitários semelhantes, como identify do ImageMagick, podem ser usados.
Este script requer bash .
Como funciona
-
shopt -s nullglobIgnore tipos de arquivos ausentes.
-
for fname in *.jpg *.png *.gif; doIsso inicia um loop sobre todos os arquivos no diretório cujos nomes terminam com
.jpg,.pnge.gif. -
read width height < <(exiv2 "$fname" 2>&1 | awk '/^Image size/{print $4,$6}')Isso usa o utilitário
exiv2para extrair o tamanho da imagem. Comoexiv2produz várias linhas de saída,awké usado para selecionar as informações de que precisamos. -
[ "$width" ] || continueSe não recuperamos um tamanho de imagem do comando acima, pule este arquivo. Isso acontecerá se, por exemplo, o arquivo não for realmente um arquivo de imagem.
-
[ "$width" -lt 1600 ] && rm "$fname"Se a largura da imagem atender a nossa condição, execute
rmpara excluir o arquivo. -
doneIsso sinaliza o final do loop.