जवाबों:
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
इसके बजाय पहली लाइन निकालने के लिए उपयोग करें।)
LC_ALL=C
चोट नहीं पहुंचा सकता।
read
कि एक उपधारा में आमंत्रित किया जा रहा है (और $line
माता-पिता के लिए प्रचारित नहीं किया गया है)।
tr
फिक्स के माध्यम से एक पाइप ।
यदि 'खाली' से आपका मतलब है कि असंपीड़ित फ़ाइल 0 बाइट्स है, तो आप gzip --list foo.gz
असम्पीडित फ़ाइल का आकार निर्धारित करने के लिए उपयोग कर सकते हैं , इसे स्वचालित करने के लिए कुछ पार्सिंग की आवश्यकता होगी। यह कुछ इस तरह दिखता है:
$ gzip --list foo.gz
compressed uncompressed ratio uncompressed_name
24 0 0.0% foo
कृपया ध्यान दें कि gzip फ़ाइल प्रारूप केवल मूल फ़ाइल आकार को संग्रहीत करने के लिए 32 बिट्स की अनुमति देता है, इसलिए संख्या वहां आकार modulo 2 ^ 32 है। इसलिए "गज़िप-एल" द्वारा दिया गया आकार शून्यता के लिए एक निश्चित परीक्षा नहीं है।
LC_ALL=C
है कि वहाँ यह सुनिश्चित करने के लिए है कि gzip हजार विभाजक संख्याओं में न डाले ताकि क्षेत्र की तुलना शून्य से की जा सके?