Skip to content

Optimize and Resize Images in All Sub-directories via Linux Shell Script

To create a shell script to do something in a directory, open a text editor and type below code.

for d in $(find /root/ewrim/images -maxdepth 10 -type d)



Optimize images via Linux Terminal

If you want to optimize images in the terminal as bulk you need to jpegoptim command. First, you should install jpegoptim.

$ apt-get install jpegoptim
$ jpegoptim my_photo.jpg 

The output should be like below.

my_photo.jpg 600x600 24bit N JFIF  [OK] 6975 --> 3564 bytes (54.66%)

You can use *.jpg for all jpeg files. You can also use compression quality. –max= (0-100)

$ jpegoptim --max=20 my_photo.jpg 

If you want to optimize all jpeg files you can use *.jpg.

Resize Images via Linux Terminal

You can resize image via imagemagick.

$ apt-get install imagemagick
$ convert *.jpg -resize 300x300\> *.jpg

The first *.jpg means convert all jpeg files. -resize 300×300 defines the new scale. The last *.jpg means overwrite files. If you don’t want to overwrite you can use *_compressed.jpg.

Create a shell script for optimizing and resizing images

Open a text editor and type below codes.

jpegoptim --max=10 *.jpg
convert *.jpg -resize 300x300\> *.jpg 

Then save it as . After then, type below command on the terminal for making it executable.

chmod +x

Now you can use below command to run your codes.


Create a shell script for optimizing and resizing images in All Sub-folders

To resize and optimize all .jpg images in all sub-folders you can use below script.

#get sub-directories
for dir in $(find /root/ewrim/images -maxdepth 10 -type d)
    #change directory
    cd $dir
    #show active directory - it's not mandatory. But I like to see directory name which is processing
    #resize images
    convert *.jpg -resize 300x300\> *.jpg 
    #optimize images 
    jpegoptim --max=10 *.jpg
    #go back 
    cd ..

This post aims to teach imagemagick and jpegoptim. You can use the below code for optimization instead of jpegoptim. You can give 0-100 for quality.

convert *.jpg -quality 10 .jpg 

Published inLinux

Be First to Comment

Leave a Reply

%d bloggers like this: