استخراج اسم الملف والملحق في Bash

المُقدّمة

هناك العديد من الأسباب التي قد تجعلك ترغب في استخراج اسم الملف وامتداده في Bash:

  • لمعالجة اسم الملف أو الامتداد – قد ترغب في استخراج اسم الملف أو امتداده من أجل تعديله، مثل إضافة بادئة أو لاحقة لاسم الملف، أو تغيير امتداد الملف.

  • لإنشاء ملف باسم فريد – قد ترغب في استخراج اسم الملف وامتداده من أجل إنشاء ملف جديد باسم فريد، مثل إضافة طابع زمني أو رقم عشوائي إلى اسم الملف.

  • لاستخدام اسم الملف أو امتداده في برنامج نصي أو أمر – قد ترغب في استخراج اسم الملف أو الامتداد لاستخدامه كوسيطة أو إدخال لبرنامج نصي أو أمر، مثل تمريره إلى برنامج أو إنشاء ملف بنفس اسم الدليل.

  • لاستخراج المعلومات من اسم الملف أو امتداده – قد ترغب في استخراج اسم الملف أو امتداده من أجل استخراج المعلومات منه، مثل التاريخ أو نوع الملف.

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

الطريقة الأولى: استخدام basename أمر

basename يمكن استخدام الأمر لاستخراج اسم الملف والامتداد من مسار الملف:

filename=$(basename /path/to/file.txt)
echo $filename

على الرغم من أن هذه الطريقة بسيطة جدًا وسهلة الاستخدام، إلا أنه لسوء الحظ، لا توجد طريقة يمكننا من خلالها استخراج اسم الملف فقط (بدون امتداد) دون أي معالجة لاحقة.

يمكنك أيضا استخدام dirname أمر لاستخراج مسار الدليل بشكل منفصل:

directory=$(dirname /path/to/file.txt)
echo $directory

الايجابيات:
  • سهلة الاستخدام
  • يتعامل مع أسماء الملفات بمسافات بشكل صحيح
سلبيات:
  • يستخرج اسم الملف فقط ولا يمكن استخراج الامتداد بشكل منفصل دون معالجة إضافية

الطريقة الثانية: استخدام توسيع المعلمة

يوفر Bash ميزة تسمى توسيع المعلمة، والذي يسمح لك باستخراج أجزاء من المتغير باستخدام بناء جملة خاص. على سبيل المثال، يمكنك استخدام الصيغة التالية لاستخراج اسم الملف والامتداد من مسار ملف مخزن في متغير:

filepath="/path/to/file.txt"
filename=${filepath##*/}
echo $filename

يمكنك أيضًا استخدام توسيع المعلمة لاستخراج الامتداد بشكل منفصل:

extension=${filename##*.}
echo $extension

الايجابيات:
  • سهولة التكيّف
  • يمكن استخراج كل من اسم الملف والامتداد بشكل منفصل،
  • يتعامل مع أسماء الملفات بمسافات بشكل صحيح
سلبيات:
  • يتطلب متغيرًا لتخزين مسار الملف

الطريقة الأولى: استخدام AWK أمر

awk يعد الأمر أداة قوية لمعالجة النصوص يمكن استخدامها لاستخراج أجزاء من السلسلة. على سبيل المثال، يمكنك استخدام بناء الجملة التالي لاستخراج اسم الملف والامتداد من مسار الملف:

filepath="/path/to/file.txt"
filename=$(echo $filepath | awk -F/ '{print $NF}')
echo $filename

تحقق من دليلنا العملي العملي لتعلم Git ، مع أفضل الممارسات ، والمعايير المقبولة في الصناعة ، وورقة الغش المضمنة. توقف عن أوامر Googling Git وفي الواقع تعلم ذلك!

يمكنك أيضا استخدام awk لاستخراج الامتداد بشكل منفصل:

extension=$(echo $filename | awk -F. '{print $NF}')
echo $extension

الايجابيات:
  • قوي
  • يمكن استخراج كل من اسم الملف والامتداد بشكل منفصل
  • يتعامل مع أسماء الملفات بمسافات بشكل صحيح
سلبيات:
  • قد يكون بناء الجملة غير مألوف لبعض المستخدمين
  • يتطلب تمرير مسار الملف من خلال awk

وفي الختام

بشكل عام، يمكن أن يكون استخراج اسم الملف وامتداده في Bash أسلوبًا مفيدًا للعمل مع الملفات وتنفيذ مهام مختلفة في Bash Shell.

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

الطابع الزمني:

اكثر من ستاكابوز