gzip圧縮ファイルが空であることを確認する方法は?

gzip圧縮ファイルが空であることを確認する方法は?

gzip圧縮ファイルが空であることを確認する簡単な方法はありますか?それとも最初に解凍する必要がありますか?

例:

$ touch foo
$ if [ -s foo ]; then echo not empty; fi
$ gzip foo
$ if [ -s foo.gz ]; then echo not empty; fi
not empty
$ wc -l foo.gz
      1 foo.gz

ベストアンサー1

gzip -l foo.gz | awk 'NR==2 {print $2}'圧縮されていないデータのサイズを印刷します。

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

あるいは、データの解凍を開始することもできます。

if [ -n "$(gunzip <foo.gz | head -c 1 | tr '\0\n' __)" ]; then
    echo "foo is not empty"
else
    echo "foo is empty"
fi

head -c(システムが最初のバイトを抽出する必要がない場合は、head -n 1代わりに最初の行を抽出してください。)

おすすめ記事