Infelizmente, o gzip contém o nome do arquivo original, então o seu tamanho irá variar sem diferentes arquivos vazios.
gunzip -c $f | head -c1 | wc -c
fará eco 1 para arquivos que não sejam zero em tamanho não compactado e 0 para arquivos vazios compactados.
for f in dir/*
do
if [[ $(gunzip -c $f | head -c1 | wc -c) == "0" ]]
then
do_file_creation
fi
done
Pode fazer o que quiser?