Вы можете использовать identify
из imagemagick
, и вы можете использовать следующую команду:
find . -iname "*.jpg" -type f -exec identify -format '%w %h %i' '{}' \; | awk '$1<300 || $2<300'
использование -exec <command> '{}' \;
гарантирует, что ваше имя файла может содержать пробелы, в качестве альтернативы вы можете использовать
find . -iname "*.jpg" -type f | xargs -I{} identify -format '%w %h %i' {} | awk '$1<300 || $2<300'
где -I{}
заботится о том же.
Что мне нравится в identify
том, что вы можете указать формат вывода; в этом случае, '%w %h %i'
который дает ширину, высоту и полный путь к изображению. Тогда awk
выражение сохраняет только те строки, для которых изображение меньше желаемого размера.
Пример вывода:
64 64 ./thumbsup.jpg
100 150 ./photomin.jpg
Редактировать: Если вы хотите только имена файлов (например, для трубопроводов rm
), просто измените $line
в awk
выражении на $3
, тогда будет напечатан только третий столбец.
| awk '$1<300||$2<300'
или| awk '$1<300||$2<300{print $3}'
(когда нужен только 3-й столбец).