كيفية الحصول على حجم ملف في نص باش

How Get Size File Bash Script



عند كتابة نصوص شل ، قد نواجه موقفًا نحتاج فيه إلى معرفة حجم الملف. على سبيل المثال ، قد تحتاج إلى استخدام هذا الحجم لتنفيذ إجراءات أخرى ، مثل نقل الملف إلى دليل مختلف أو حذفه.

سيناقش هذا البرنامج التعليمي الطرق السريعة التي يمكنك استخدامها في برنامج نصي bash للحصول على حجم الملف بالتنسيق المحدد مثل Bytes أو Kilobytes أو Megabytes أو Gigabytes.







الطريقة الأولى: الأمر ls

الطريقة الأولى هي استخدام الأمر ls القديم الجيد. عند إقرانه بأوامر أخرى ، يمكن للأمر ls التقاط حجم الملف.



لتنفيذ البرنامج النصي ، نحتاج إلى المسار الكامل للملف ، وسرد معلومات الملف باستخدام ls ، ثم نحدد الحجم باستخدام أمر مثل awk.



سيبدو نموذج البرنامج النصي لذلك كما يلي:





#!/bin/bash
رما - طرد - قذف 'أدخل المسار الكامل للملف.'
اقرأ ملف
حجم الملف= دولار(ls -lh ملف $ | awk '{print $ 5}')
رما - طرد - قذف 'ملف $بحجمملف دولار'

النص أعلاه بسيط نسبيًا. باستخدام الأمر echo and read ، نحصل على اسم المسار الكامل للملف.

بعد ذلك ، نستخدم الأمر ls -lh لسرد جميع الأدلة والحجم بتنسيق يمكن قراءته بواسطة الإنسان ، وأخيرًا ، قم بتمرير الإخراج إلى awk والاستيلاء على الحجم كـ 5ذعامل.



فيما يلي توضيح للسيناريو.

chmod + x size.sh
./size.sh

هنا هو ناتج ذلك:

sudo ./size.sh
أدخل المسار الكامل للملف
/ etc / passwd
/ etc / passwd يبلغ حجمه 2.9 كيلوبايت

الطريقة 2: أمر wc

هناك طريقة أخرى يمكننا استخدامها للحصول على حجم ملف في نص برمجي bash وهو الأمر wc. يقوم الأمر wc بإرجاع عدد الكلمات وحجم الملف وحجمه بالبايت.

حاليا:

كما تعلم ، فإن قراءة حجم الملف بالبايت ليس بالأمر السهل. لمواجهة هذا ، يمكننا تنفيذ قائمة بسيطة ونطلب من المستخدم تنسيق الحجم مثل KB و MB و GB.

اعتمادًا على التنسيق المحدد ، سنقوم بتحويل البايت إلى التنسيق المذكور.

فيما يلي مثال على برنامج نصي لتنفيذ مثل هذا المنطق:

#!/bin/bash
رما - طرد - قذف 'حدد تنسيق الحجم ، واستخدم القيم الرقمية (1 للبايت ، و 2 للكيلو بايت ، وما إلى ذلك)'
رما - طرد - قذف ''
1. بايت
2. كيلو بايت
3. ميغا بايت
4. جيجا بايت
'
'
رما - طرد - قذف ************************************************** * ********************** '
اقرأصيغة

رما - طرد - قذف 'أدخل المسار الكامل للملف الهدف:'
اقرأ ملف
حجم الملف= دولار(مرحاض ملف $ | awk '{print $ 1}')
لو [[('تنسيق $'==1)]]؛
من ثم
رما - طرد - قذف 'ملف $تقريباملف دولاربايت
أليف [[('تنسيق $'==2)]]؛
من ثم
تقريبا= دولار(قبل الميلاد <<<مقياس = 3 ؛ملف دولار/ 1024 ')
رما - طرد - قذف 'ملف $تقريباكيلو بايت دولاركيلو بايت '
أليف [[('تنسيق $'==3)]]؛
من ثم
ميغابايت= دولار(قبل الميلاد <<<مقياس = 6 ؛ملف دولار/ 1048576 ')
رما - طرد - قذف 'ملف $تقريباميغابايتميغا بايت

أليف [[('تنسيق $'==4)]]؛
من ثم
جيجابايت= دولار(قبل الميلاد <<<مقياس = 12 ؛ملف دولار/ 1073741824 ')
رما - طرد - قذف 'ملف $تقريباغيغابايتGB '
آخر
رما - طرد - قذف 'تنسيق غير صحيح.'
خروج
يكون

في البرنامج النصي أعلاه ، نبدأ بمطالبة المستخدم بإدخال تنسيق حجم الملف. يقرأ Bash هذا الإدخال ويخزنه في متغير التنسيق.

بعد ذلك ، نطلب من المستخدم تحديد مسار الملف وتخزين هذا المتغير في ملف.

تستدعي الخطوة التالية الأمر wc في الملف المحدد. نظرًا لأن wc -c يُرجع حجم الملف بالبايت ومسار الملف ، فإننا نستخدم AWK لالتقاط حجم الملف فقط. نقوم بتخزين الحجم بالبايت كملف.

أخيرًا ، ننفذ عبارة if بسيطة للتحقق مما إذا كان تنسيق الحجم إما 1 (بايت) ، 2 (كيلو بايت) ، 3 (ميغا بايت) ، 4 (جيجابايت). ثم نستخدم الأمر bc لتحويل حجم الملف بالبايت إلى التنسيق المحدد.

ملاحظة: نستخدم مقياسًا متغيرًا للأمر bc لاستيعاب عدد الكسور العشرية لكل تقييم.

توضح الصورة أدناه كيفية عمل البرنامج النصي.

ملاحظة أخرى : النص أعلاه عبارة عن نصوص مجردة تمامًا وبالتالي فهو مفتوح لتحسينات كبيرة. لا تتردد في تحسينه وتعديله حسب احتياجاتك.

الطريقة الثالثة: استخدام أمر stat

لا يمكننا أن ننسى الأمر stat. باستخدام الأمر stat ، يمكننا عرض معلومات مفصلة حول ملف أو نظام الملفات.

يقوم الأمر stat بإرجاع الحجم بالبايت أيضًا. يمكنك استخدام منطق مشابه في البرنامج النصي أعلاه لتحديد التنسيق.

إليك نص بسيط باستخدام الأمر stat:

#!/bin/bash
رما - طرد - قذف 'أدخل مسار الملف.'
اقرأ ملف
حجم الملف= دولار(حالة ٪سملف $)
رما - طرد - قذف 'ملف $دقيقملف دولاربايت.

في الختام

ناقش هذا البرنامج التعليمي ثلاث طرق يمكنك استخدامها للحصول على حجم ملف باستخدام برنامج نصي باش. من الجيد ملاحظة أن Linux لديه مجموعة شاملة من الأدوات والطرق لتحقيق ذلك. ابحث عن الشخص الذي يناسبك والتزم به.