How do I batch-downsize images on linux, while keeping small images small?

Solution 1:

If you use convert, you can specify the parameter > to only shrink bigger images, leaving the other untouched (the \ is required, or the magic char > is not escaped):

convert large_image.png -resize 1248x1024\> large_image.png
convert not_large_image.png -resize 1248x1024\> not_large_image.png

It will only change the bigger images.

[ETA] convert is part of ImageMagick.