Это переместит все файлы jpg, png или gif размером 1920x1080 из текущего каталога в 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
Это просматривает текущий каталог и удаляет все изображения jpg, png или gif шириной менее 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
При этом используется утилита захвата изображения exiv2
. В Debian-подобной системе exiv2
можно установить, запустив apt-get install exiv2
. С незначительными изменениями, аналогичными утилитами, такими как ImageMagick - х identify
могут быть использованы.
Этот скрипт требует bash
.
Как это устроено
shopt -s nullglob
Игнорировать отсутствующие типы файлов.
for fname in *.jpg *.png *.gif; do
Это запускает цикл для всех файлов в каталоге, имена которых заканчиваются на .jpg
, .png
и .gif
.
read width height < <(exiv2 "$fname" 2>&1 | awk '/^Image size/{print $4,$6}')
Это использует утилиту exiv2
для извлечения размера изображения. Поскольку exiv2
производит несколько строк вывода, awk
используется для выбора необходимой нам информации.
[ "$width" ] || continue
Если мы не восстановили размер изображения из приведенной выше команды, пропустите этот файл. Это произойдет, если, например, файл на самом деле не был файлом изображения.
[ "$width" -lt 1600 ] && rm "$fname"
Если ширина изображения соответствует нашему условию, выполните rm
чтобы удалить файл.
done
Это сигнализирует об окончании цикла.