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
代わりに最初の行を抽出してください。)