How to find all images with a certain pixel size using command line?
You can use identify
from imagemagick
, and you can use the following command:
find . -iname "*.jpg" -type f -exec identify -format '%w %h %i' '{}' \; | awk '$1<300 || $2<300'
the use of -exec <command> '{}' \;
makes sure that your filename can have spaces in them, alternatively you can use
find . -iname "*.jpg" -type f | xargs -I{} identify -format '%w %h %i' {} | awk '$1<300 || $2<300'
where the -I{}
takes care of the same thing.
What I like about identify
is that you can specify the output format; in this case '%w %h %i'
which gives the width, height and full pathname of the image. Then the awk
expression only keeps those lines for which the image is smaller than the desired size.
Example of the output:
64 64 ./thumbsup.jpg
100 150 ./photomin.jpg
Edit: If you want the filenames only (for piping to rm
for instance), simply change $line
in the awk
statement to $3
, then it will only print the third column.