כיצד להשיג את גודל הקובץ בסקריפט Bash

How Get Size File Bash Script



בעת כתיבת סקריפטים של מעטפת, אנו עלולים להיתקל במצב בו עלינו לדעת את גודל הקובץ. לדוגמה, ייתכן שיהיה עליך להשתמש בגודל זה לביצוע פעולות אחרות, כגון העברת הקובץ לספרייה אחרת או מחיקתו.

הדרכה זו תדון בשיטות מהירות בהן תוכל להשתמש בסקריפט bash כדי לקבל גודל קובץ בפורמט שצוין כגון Bytes, Kilobytes, Megabytes או Gigabyte.







שיטה 1: הפקודה ls

השיטה הראשונה היא להשתמש בפקודה ls הישנה והטובה. כאשר הוא משויך לפקודות אחרות, הפקודה ls יכולה לתפוס את גודל הקובץ.



כדי ליישם את הסקריפט, אנו זקוקים לנתיב המלא של הקובץ, רשום את פרטי הקובץ עם ls, ותפס את הגודל באמצעות פקודה כגון awk.



סקריפט לדוגמה לכך ייראה כך:





#!/bin/bash
זרק 'הזן את הנתיב המלא לקובץ.'
לקרוא קוֹבֶץ
גודל הקובץ= $(ls -אה קובץ $ | awk '{הדפס $ 5}')
זרק 'קובץ $יש גודל שלגודל קובץ $'

התסריט הנ'ל פשוט יחסית. באמצעות פקודת הד וקריאה, אנו מקבלים את שם הנתיב המלא של הקובץ.

לאחר מכן, אנו משתמשים בפקודה ls -lh כדי לרשום את כל הספריות והגודל בפורמט קריא לאדם, ולבסוף, להעביר את הפלט ל- awk ולתפוס את הגודל כ -5המִשְׁתַנֶה.



להלן המחשה של התסריט.

chmod +x size.sh
./size.sh

להלן הפלט לכך:

sudo ./size.sh
הזן את הנתיב המלא לקובץ
/etc/passwd
/etc/passwd יש גודל של 2.9K

שיטה 2: הפקודה wc

שיטה נוספת בה אנו יכולים להשתמש כדי לתפוס את גודל הקובץ בסקריפט bash היא הפקודה wc. הפקודה wc מחזירה את מספר המילים, הגודל והגודל של קובץ בבתים.

עַכשָׁיו:

כידוע, קריאת גודל הקובץ בבתים אינה קלה במיוחד. כדי להתמודד עם זה, נוכל ליישם תפריט פשוט ולשאול את המשתמש בפורמט הגודל כגון KB, MB ו- GB.

בהתאם לפורמט שנבחר, נמיר את הבייטים לפורמט האמור.

להלן סקריפט לדוגמא ליישום היגיון כזה:

#!/bin/bash
זרק 'בחר תבנית גודל, השתמש בערכים מספריים (1 עבור בתים, 2 עבור קילוביטים וכו') '
זרק '''
1. בתים
2. קילובייט
3. מגה -בתים
4. GigaBytes
'
''
זרק '********************************************* ********************* '
לקרואפוּרמָט

זרק 'הזן את הנתיב המלא לקובץ היעד:'
לקרוא קוֹבֶץ
גודל הקובץ= $(שירותים קובץ $ | awk '{הדפס $ 1}')
אם [[('פורמט $'==1)]];
לאחר מכן
זרק 'קובץ $הוא כגודל קובץ $בתים
אליף [[('פורמט $'==2)]];
לאחר מכן
משוער= $(לִפנֵי הַסְפִירָה <<<'סולם = 3;גודל קובץ $/ 1024 ')
זרק 'קובץ $הוא בערך$ קילוKB '
אליף [[('פורמט $'==3)]];
לאחר מכן
mb= $(לִפנֵי הַסְפִירָה <<<'סולם = 6;גודל קובץ $/ 1048576 ')
זרק 'קובץ $הוא בערך$ mbMB '

אליף [[('פורמט $'==4)]];
לאחר מכן
gb= $(לִפנֵי הַסְפִירָה <<<'סולם = 12;גודל קובץ $/ 1073741824 ')
זרק 'קובץ $הוא בערך$ gbGB '
אַחֵר
זרק 'פורמט לא נכון'.
יְצִיאָה
לִהיוֹת

בתסריט שלמעלה, אנו מתחילים לבקש מהמשתמש להזין את תבנית גודל הקובץ. Bash קורא קלט זה ושומר אותו במשתנה הפורמט.

לאחר מכן, אנו מבקשים מהמשתמש את נתיב הקובץ ושומרים את המשתנה הזה בקובץ.

השלב הבא קורא לפקודה wc -c בקובץ שצוין. מאחר wc -c מחזיר את גודל הקובץ בבתים ואת נתיב הקובץ, אנו משתמשים ב- AWK כדי לתפוס רק את גודל הקובץ. אנו שומרים את הגודל בייטים כגודל הקובץ.

לבסוף, אנו מיישמים משפט אם פשוט כדי לבדוק אם פורמט הגודל הוא 1 (בתים), 2 (קילובייט), 3 (מגה -בתים), 4 (ג'יגה -בייט). לאחר מכן אנו משתמשים בפקודה bc כדי להמיר את גודל הקובץ בבתים לפורמט שצוין.

הערה: אנו משתמשים בסולם משתנה עבור הפקודה bc כדי להתאים את מספר העשרונים לכל הערכה.

התמונה למטה מראה כיצד התסריט עובד.

הערה נוספת : התסריט הנ'ל הוא עצמות עצם טהורות ולכן הוא פתוח לשיפורים משמעותיים. אל תהסס לשפר אותו ולשפר אותו לצרכיך.

שיטה 3: שימוש בפקודה stat

איננו יכולים לשכוח את פקודת stat. באמצעות הפקודה stat, נוכל להציג מידע מפורט אודות קובץ או מערכת הקבצים.

הפקודה stat מחזירה את הגודל גם בבתים. אתה יכול להשתמש בהיגיון דומה בתסריט שלמעלה כדי לבחור את הפורמט.

להלן סקריפט פשוט באמצעות הפקודה stat:

#!/bin/bash
זרק 'הזן את נתיב הקובץ.'
לקרוא קוֹבֶץ
גודל הקובץ= $(מדינה %שקובץ $)
זרק 'קובץ $הוא מדויקגודל קובץ $בייטים. '

בסגירה

הדרכה זו דנה בשלוש שיטות בהן ניתן להשתמש בכדי לקבל את גודל הקובץ באמצעות סקריפט bash. טוב לציין שלינוקס יש אוסף מקיף של כלים ושיטות להשיג זאת. מצא את האחד שמתאים לך והישאר איתו.