উত্তর:
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 বিটকে মঞ্জুরি দেয়, সুতরাং সেখানে নম্বরটি মডিউল 2 ^ 32 রয়েছে। সুতরাং "gzip -l" দ্বারা প্রদত্ত আকার শূন্যতার জন্য একটি নির্দিষ্ট পরীক্ষা নয়।
LC_ALL=C
যে জিজিপ হাজার সংখ্যক বিভাজক সংখ্যায় রাখে না যাতে ক্ষেত্রটি শূন্যের সাথে তুলনা করা যায়?