מבוא
ישנן סיבות רבות מדוע אולי תרצה לחלץ את שם הקובץ והסיומת של קובץ ב-Bash:
-
כדי לשנות את שם הקובץ או הסיומת – ייתכן שתרצה לחלץ את שם הקובץ או הסיומת כדי לשנות אותם, כגון הוספת קידומת או סיומת לשם הקובץ, או שינוי סיומת הקובץ.
-
כדי ליצור קובץ עם שם ייחודי – ייתכן שתרצה לחלץ את שם הקובץ והסיומת כדי ליצור קובץ חדש עם שם ייחודי, כגון על ידי הוספת חותמת זמן או מספר אקראי לשם הקובץ.
-
כדי להשתמש בשם הקובץ או בסיומת בסקריפט או בפקודה – ייתכן שתרצה לחלץ את שם הקובץ או הסיומת כדי להשתמש בהם כארגומנט או קלט עבור סקריפט או פקודה, כגון להעביר אותו לתוכנית או ליצור קובץ באותו שם כמו ספרייה.
-
כדי לחלץ מידע משם הקובץ או הסיומת – ייתכן שתרצה לחלץ את שם הקובץ או הסיומת כדי לחלץ מהם מידע, כגון התאריך או סוג הקובץ.
במאמר זה, נסקור את שלושת הדרכים הנפוצות ביותר בהן ניתן לחלץ את שם הקובץ וסיומת הקובץ ב-Bash. אנו נסתכל על כל אחד מהם וניתן לך את היתרונות והחסרונות, כדי שתוכל לקבל החלטה מושכלת לגבי הגישה המתאימה לך ביותר.
שיטה 1: שימוש ב- שם בסיס פיקוד
השמיים basename
ניתן להשתמש בפקודה כדי לחלץ את שם הקובץ והסיומת מנתיב קובץ:
filename=$(basename /path/to/file.txt)
echo $filename
למרות ששיטה זו היא די פשוטה וקלה לשימוש, למרבה הצער, אין סיכוי שנוכל לחלץ רק את שם הקובץ (ללא סיומת) ללא כל עיבוד אחר.
אתה יכול גם להשתמש dirname
פקודה כדי לחלץ את נתיב הספרייה בנפרד:
directory=$(dirname /path/to/file.txt)
echo $directory
יתרונות:
- פשוט לשימוש
- מטפל נכון בשמות קבצים עם רווחים
חסרונות:
- מחלץ רק את שם הקובץ ולא יכול לחלץ את התוסף בנפרד ללא עיבוד נוסף
שיטה 2: שימוש בהרחבת פרמטרים
Bash מספק תכונה בשם הרחבת פרמטר, המאפשר לחלץ חלקים של משתנה באמצעות תחביר מיוחד. לדוגמה, אתה יכול להשתמש בתחביר הבא כדי לחלץ את שם הקובץ והסיומת מנתיב קובץ המאוחסן במשתנה:
filepath="/path/to/file.txt"
filename=${filepath##*/}
echo $filename
אתה יכול גם להשתמש בהרחבת פרמטרים כדי לחלץ את התוסף בנפרד:
extension=${filename##*.}
echo $extension
יתרונות:
- גמיש
- יכול לחלץ גם את שם הקובץ וגם את הסיומת בנפרד,
- מטפל נכון בשמות קבצים עם רווחים
חסרונות:
- דורש משתנה כדי לאחסן את נתיב הקובץ
שיטה 3: שימוש ב- awk הפקודה
השמיים awk
command הוא כלי רב עוצמה לעיבוד טקסט שניתן להשתמש בו כדי לחלץ חלקים של מחרוזת. לדוגמה, אתה יכול להשתמש בתחביר הבא כדי לחלץ את שם הקובץ והסיומת מנתיב קובץ:
filepath="/path/to/file.txt"
filename=$(echo $filepath | awk -F/ '{print $NF}')
echo $filename
עיין במדריך המעשי והמעשי שלנו ללימוד Git, עם שיטות עבודה מומלצות, סטנדרטים מקובלים בתעשייה ודף רמאות כלול. תפסיק לגוגל פקודות Git ולמעשה ללמוד זה!
אתה יכול גם להשתמש awk
כדי לחלץ את התוסף בנפרד:
extension=$(echo $filename | awk -F. '{print $NF}')
echo $extension
יתרונות:
- חזק
- יכול לחלץ גם את שם הקובץ וגם את הסיומת בנפרד
- מטפל נכון בשמות קבצים עם רווחים
חסרונות:
- תחביר עשוי להיות לא מוכר למשתמשים מסוימים
- מחייב לצרף את נתיב הקובץ דרכו
awk
סיכום
בסך הכל, חילוץ שם הקובץ והסיומת של קובץ ב-Bash יכולה להיות טכניקה שימושית לעבודה עם קבצים ולביצוע משימות שונות במעטפת Bash.
לכל אחת מהשיטות המוזכרות יש יתרונות וחסרונות משלה, והבחירה הטובה ביותר תהיה תלויה בצרכים וההעדפות הספציפיות שלך. לעתים קרובות כדאי להכיר גישות מרובות כדי שתוכל לבחור את האחת המתאימה ביותר למצב שלך.