gzip -l foo.gz | awk 'NR==2 {print $2}'
imprime o tamanho dos dados não compactados.
if LC_ALL=C gzip -l foo.gz | awk 'NR==2 {exit($2!=0)}'; then
echo foo is empty
else
echo foo is not empty
fi
Alternativamente, você pode começar a descomprimir os dados.
if [ -n "$(gunzip <foo.gz | head -c 1 | tr 'if LC_ALL=C gzip -l foo.gz | awk 'NR==2 {exit($2!=0)}'; then
echo foo is empty
else
echo foo is not empty
fi
\n' __)" ]; then
echo "foo is not empty"
else
echo "foo is empty"
fi
(Se o seu sistema não tiver head -c
para extrair o primeiro byte, use head -n 1
para extrair a primeira linha).