Zipファイルが空かどうかを確認するにはどうすればよいですか? Zipファイルのサイズが常にゼロであるとは限らないため、bashで-sを使用することはできません。 Zipファイルに空のディレクトリがある場合は、ファイルを削除します。それ以外の場合は、ファイルを抽出します。
Info-Zipツール(Zip
、unzip
、zipinfo
)がインストールされている場合は、Zipファイルでzipinfo
を使用して、出力をに送信できます。 /dev/null
。ファイルが空でない場合、ステータスは0になります。
そう:
if zipinfo foo.Zip > /dev/null; then
echo not empty
else
echo empty
fi
zipinfo -t foo.Zip
を実行すると、Zipファイルに何も含まれていない場合に終了ステータス($?
から)でエラーが発生します。私が実行しているバージョン(3.00)では、これは1
になりますが、これは単なる一般的なエラーコードであると思います。そのため、あいまいさが他の問題を引き起こす可能性があります。
また、ファイルに関する基本情報を含む文字列であるコマンドのテキスト出力を処理する必要があります。この答えは上記のいずれかに似ていると思います。
編集:戻り値があいまいにならないようにしたい場合(そしてgrep
の気分になっている場合)、上記のコマンドの出力を「空のzipfile」にgrepできます。
jar
がインストールされている場合は、-t
オプションを使用できます。
jar -tvf file.Zip
ディレクターにはすべて末尾にスラッシュが付いているので、grep
にパイプできます。
if jar -tvf file.Zip | egrep -v '/$' > /dev/null; then # we have some files!
unzip file.Zip
else
rm -f file.Zip
fi