HackCode
HackCode

Reputation: 1857

How to compress gif using gifsicle and exec in bash?

Right now, I am trying to compress all the gif images in a folder by using gifsicle like this:

find . -name '*.gif' -exec gifsicle -O '{}' \;


But I am getting this following output(error)

gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: While reading './4dlife/src/static/img/loading.gif' frame #10:
gifsicle:   warning: trailing garbage after GIF ignored
gifsicle: <stdout>: is a terminal
gifsicle: While reading './4dlife/src/static/img/ajax-loader.gif' frame #8:
gifsicle:   warning: trailing garbage after GIF ignored
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: While reading './4dlife/src/static/img/ui/Loader.gif' frame #10:
gifsicle:   warning: trailing garbage after GIF ignored
gifsicle: <stdout>: is a terminal
gifsicle: While reading './4dlife/src/static/img/ui/LoaderPeque.gif' frame #31:
gifsicle:   warning: trailing garbage after GIF ignored
gifsicle: <stdout>: is a terminal
gifsicle: While reading './4dlife/src/static/img/ui/preloader/ajax-loader-blue.gif' frame #4:
gifsicle:   warning: trailing garbage after GIF ignored
gifsicle: <stdout>: is a terminal
gifsicle: While reading './4dlife/src/static/img/ui/preloader/ajax-loader-green.gif' frame #8:
gifsicle:   warning: trailing garbage after GIF ignored
gifsicle: <stdout>: is a terminal
gifsicle: While reading './4dlife/src/static/img/ui/preloader/spinner_squares_circle.gif' frame #8:
gifsicle:   warning: trailing garbage after GIF ignored
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: While reading './4dlife/src/production/img/loading.gif' frame #10:
gifsicle:   warning: trailing garbage after GIF ignored
gifsicle: <stdout>: is a terminal
gifsicle: While reading './4dlife/src/production/img/ajax-loader.gif' frame #8:
gifsicle:   warning: trailing garbage after GIF ignored
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: <stdout>: is a terminal
gifsicle: While reading './4dlife/src/production/img/ui/Loader.gif' frame #10:
gifsicle:   warning: trailing garbage after GIF ignored
gifsicle: <stdout>: is a terminal
gifsicle: While reading './4dlife/src/production/img/ui/LoaderPeque.gif' frame #31:
gifsicle:   warning: trailing garbage after GIF ignored
gifsicle: <stdout>: is a terminal
gifsicle: While reading './4dlife/src/production/img/ui/preloader/ajax-loader-blue.gif' frame #4:
gifsicle:   warning: trailing garbage after GIF ignored
gifsicle: <stdout>: is a terminal
gifsicle: While reading './4dlife/src/production/img/ui/preloader/ajax-loader-green.gif' frame #8:
gifsicle:   warning: trailing garbage after GIF ignored
gifsicle: <stdout>: is a terminal
gifsicle: While reading './4dlife/src/production/img/ui/preloader/spinner_squares_circle.gif' frame #8:
gifsicle:   warning: trailing garbage after GIF ignored
gifsicle: <stdout>: is a terminal


I have tried using various other options like -O2 or -O3 or --optimize but still no luck. Any suggestions?

Upvotes: 1

Views: 1630

Answers (1)

Lesmana
Lesmana

Reputation: 27053

gifsicle complains because it does not want to write the processed gif to a terminal. You have to either redirect the stdout to a new file or tell gifsicle to work in place with --batch.

find . -name '*.gif' -exec gifsicle -O '{}' > optimized_'{}' \;

or

find . -name '*.gif' -exec gifsicle --batch -O '{}' \;

Upvotes: 2

Related Questions