Нет, -I выдает одинаковый результат на битых и целых картинках:
Целая:
-bash-4.1# ~/usr/bin/gifsicle-1.87/src/gifsicle -I /var/www/paulmann/data/www/paulmann.su/photos/28060fr02.gif
* /var/www/paulmann/data/www/paulmann.su/photos/28060fr02.gif 1 image
logical screen 120x70
global color table [256]
background 0
+ image #0 120x70
Битая:
-bash-4.1# ~/usr/bin/gifsicle-1.87/src/gifsicle -I /var/www/paulmann/data/www/paulmann.su/photos/28060bad.gif
* /var/www/paulmann/data/www/paulmann.su/photos/28060bad.gif 1 image
logical screen 120x70
global color table [256]
background 0
+ image #0 120x70
и только запустив оптимизацию мы имеем:
gifsicle:/var/www/paulmann/data/www/paulmann.su/photos/28060bad.gif: read error: image corrupted, code out of range (4 times)
gifsicle:/var/www/paulmann/data/www/paulmann.su/photos/28060bad.gif: read error: missing 8089 pixels of image data
Спасибо
Валерий Рябошапко - что-бы твое решение работало нужно вместо "-I" использовать "-O3", т.к. битый файл определяется только при компрессии. Удалил все, на что ругнулась программа при оптимизации (если оптимизация успешная, gifsicle ничего не выводит):
for i in `find /var/www -name "*.gif"`; do ~/usr/bin/gifsicle-1.87/src/gifsicle -O3 $i > /dev/null || rm $i done
P.S. при этом, кроме битых, удалятся JPG файлы с расширением GIF и все другие файлы с которыми хоть что-то не то.