Вы можете использовать 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-й столбец).