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 nullglob
Ignore tipos de arquivos ausentes.
-
for fname in *.jpg *.png *.gif; do
Isso inicia um loop sobre todos os arquivos no diretório cujos nomes terminam com
.jpg
,.png
e.gif
. -
read width height < <(exiv2 "$fname" 2>&1 | awk '/^Image size/{print $4,$6}')
Isso usa o utilitário
exiv2
para extrair o tamanho da imagem. Comoexiv2
produz várias linhas de saída,awk
é usado para selecionar as informações de que precisamos. -
[ "$width" ] || continue
Se 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
rm
para excluir o arquivo. -
done
Isso sinaliza o final do loop.