I think your variable $MIN_SIZE
doesn't make it into the subshell, hence it is empty there and not quoted and thus you get that misleading error message because the shell sees something like [ 123 -gt ]
after variable expansion (not quoting is a step to the dark side and leads to hate and suffering).
You should set that constant in the subshell:
-exec bash -c '\
MIN_SIZE=32; \
PLAINFILE={};GZIPPEDFILE={}.gz; \
if [ -e $GZIPPEDFILE ]; \
then if [ `stat --printf=%Y $PLAINFILE` -gt `stat --printf=%Y $GZIPPEDFILE` ]; \
then gzip -1 -f -c $PLAINFILE > $GZIPPEDFILE; \
fi; \
elif [ `stat --printf=%s $PLAINFILE` -gt $MIN_SIZE ]; \
then gzip -1 -c $PLAINFILE > $GZIPPEDFILE; \
fi' \;
And of course you should quote your stuff properly to at least get decent error messages:
-exec bash -c '\
MIN_SIZE=32; \
PLAINFILE={};GZIPPEDFILE={}.gz; \
if [ -e "$GZIPPEDFILE" ]; \
then if [ "`stat --printf=%Y "$PLAINFILE"`" -gt "`stat --printf=%Y "$GZIPPEDFILE"`" ]; \
then gzip -1 -f -c "$PLAINFILE" > "$GZIPPEDFILE"; \
fi; \
elif [ "`stat --printf=%s "$PLAINFILE"`" -gt "$MIN_SIZE" ]; \
then gzip -1 -c "$PLAINFILE" > "$GZIPPEDFILE"; \
fi' \;