باش میں فائل نام اور ایکسٹینشن کو الگ کرنے کا طریقہ

Bash

تعارف:

Bash میں فائلوں کے ساتھ کام کرتے وقت، آپ کو اکثر فائل کا نام اس کی توسیع سے الگ کرنے کی ضرورت پڑ سکتی ہے۔ ایک عام نقطہ نظر `cut` کمانڈ استعمال کرتا ہے، لیکن یہ طریقہ ان فائل ناموں کے ساتھ ناکام ہو سکتا ہے جن میں متعدد ادوار ہوتے ہیں۔

مثال کے طور پر، ''a.b.js'' جیسا فائل نام غلط طریقے سے ''a.b'' اور ''js'' کی بجائے ''a'' اور ''b.js'' میں تقسیم ہو جائے گا۔ اگرچہ Python `os.path.splitext()` کے ساتھ ایک آسان حل فراہم کرتا ہے، لیکن Python کا استعمال ہمیشہ زیادہ موثر آپشن نہیں ہو سکتا۔ یہ مضمون باش میں اس کام کو حاصل کرنے کے لیے بہتر طریقے تلاش کرتا ہے۔

کمانڈ تفصیل
${variable%.*} فائل نام سے ایکسٹینشن کو ہٹانے کے لیے پیرامیٹر کی توسیع۔
${variable##*.} فائل نام سے ایکسٹینشن نکالنے کے لیے پیرامیٹر کی توسیع۔
awk -F. فیلڈ سیپریٹر کو ایک مدت پر سیٹ کرتا ہے، جو فائل نام کو تقسیم کرنے کے لیے استعمال ہوتا ہے۔
OFS="." awk میں آؤٹ پٹ فیلڈ سیپریٹر، بغیر کسی توسیع کے فائل نام کی تشکیل نو کے لیے استعمال ہوتا ہے۔
NF-- awk میں فیلڈز کی تعداد کو ایک ایک کرکے کم کرتا ہے، مؤثر طریقے سے ایکسٹینشن کو ہٹاتا ہے۔
${BASH_REMATCH} وہ صف جو باش میں ریگولر ایکسپریشن سے میچ رکھتی ہے۔
local variable Bash میں ایک فنکشن کے اندر مقامی دائرہ کار کے ساتھ متغیر کا اعلان کرتا ہے۔

باش حل کی تفصیلی بریک ڈاؤن

فراہم کردہ اسکرپٹس فائل کا نام الگ کرنے اور باش میں اس کی توسیع کے مختلف طریقے پیش کرتی ہیں۔ پہلی اسکرپٹ Bash پیرامیٹر کی توسیع کا استعمال کرتی ہے۔ متغیر آخری مدت سے لے کر سٹرنگ کے اختتام تک ہر چیز کو اتار کر توسیع کو ہٹاتا ہے، جبکہ آخری مدت کے بعد سب کچھ لے کر توسیع حاصل کرتا ہے۔ یہ طریقہ زیادہ تر فائل نام کے ڈھانچے کے لیے سیدھا اور موثر ہے۔ دوسرا اسکرپٹ استعمال کرتا ہے۔ یونکس جیسے ماحول میں ٹیکسٹ پروسیسنگ کا ایک طاقتور ٹول۔ فیلڈ سیپریٹر کو استعمال کرتے ہوئے مدت پر سیٹ کرکے -F.، یہ فائل نام کو حصوں میں تقسیم کرنے کی اجازت دیتا ہے۔ آؤٹ پٹ فیلڈ الگ کرنے والا، ، اور کے ساتھ فیلڈز کی تعداد کو کم کرنا فائل نام کو اس کی توسیع کے بغیر دوبارہ جوڑنے کی تکنیک ہیں۔

تیسرا اسکرپٹ باش میں ریگولر ایکسپریشنز کو استعمال کرتا ہے، فائدہ اٹھاتے ہوئے ریجیکس میچ میں گروپس کو پکڑنے کے لیے۔ یہ اسکرپٹ ایک پیٹرن کا استعمال کرتا ہے جو فائل نام کو دو گروپوں میں تقسیم کرتا ہے: ایک بنیادی نام کے لیے اور دوسرا توسیع کے لیے۔ آخر میں، کسٹم فنکشن اسکرپٹ ایک فنکشن کے اندر پیرامیٹر کی توسیع کی منطق کو سمیٹتا ہے، کوڈ کو دوبارہ استعمال کرنے اور پڑھنے کی اہلیت کو بڑھاتا ہے۔ یہ استعمال کرتا ہے۔ متغیرات کو فنکشن کے اندر دائرہ کار میں رکھنے کے اعلانات، بڑے اسکرپٹ میں غیر ارادی ضمنی اثرات کو روکتے ہیں۔ ہر طریقہ ایک ہی مسئلے کو حل کرنے کے لیے ایک مختلف نقطہ نظر کا مظاہرہ کرتا ہے، باش اسکرپٹنگ کی استعداد اور طاقت کو ظاہر کرتا ہے۔

Bash میں پیرامیٹر کی توسیع کا استعمال

باش اسکرپٹنگ

#!/bin/bash
# Script to extract filename and extension using parameter expansion
FILE="a.b.js"
FILENAME="${FILE%.*}"
EXTENSION="${FILE##*.}"
echo "Filename: $FILENAME"
echo "Extension: $EXTENSION"

فائل نام اور ایکسٹینشن کو الگ کرنے کے لیے اوک کا استعمال

اوک کے ساتھ باش

#!/bin/bash
# Script to extract filename and extension using awk
FILE="a.b.js"
FILENAME=$(echo "$FILE" | awk -F. '{OFS="."; NF--; print $0}')
EXTENSION=$(echo "$FILE" | awk -F. '{print $NF}')
echo "Filename: $FILENAME"
echo "Extension: $EXTENSION"

باش میں ریگولر ایکسپریشنز کا استعمال

ریجیکس کے ساتھ باش اسکرپٹنگ

#!/bin/bash
# Script to extract filename and extension using regex
FILE="a.b.js"
[[ "$FILE" =~ (.*)\.(.*) ]]
FILENAME=${BASH_REMATCH[1]}
EXTENSION=${BASH_REMATCH[2]}
echo "Filename: $FILENAME"
echo "Extension: $EXTENSION"

باش میں کسٹم فنکشن کا استعمال

کسٹم فنکشن کے ساتھ باش اسکرپٹنگ

#!/bin/bash
# Function to extract filename and extension
extract_filename_extension() {
  local file="$1"
  echo "Filename: ${file%.*}"
  echo "Extension: ${file##*.}"
}
# Call the function with a file
extract_filename_extension "a.b.js"

باش میں فائل میں ہیرا پھیری کے لیے متبادل طریقوں کی تلاش

پہلے سے زیر بحث طریقوں سے ہٹ کر، فائل کے ناموں اور ایکسٹینشنز کو جوڑنے کے لیے باش میں دیگر مفید تکنیکیں موجود ہیں۔ ایسا ہی ایک طریقہ استعمال کرنا شامل ہے۔ اور احکامات ایک راستے سے فائل کا نام نکالنے کے لیے استعمال کیا جا سکتا ہے، جبکہ dirname ڈائریکٹری کا راستہ بازیافت کرتا ہے۔ پیرامیٹر کی توسیع کے ساتھ ان کمانڈز کو جوڑنا فائل ناموں اور ایکسٹینشنز کو مؤثر طریقے سے الگ کر سکتا ہے۔ مثال کے طور پر، استعمال کرتے ہوئے فائل نام سے ایکسٹینشن کو ہٹاتا ہے۔ یہ نقطہ نظر خاص طور پر مفید ہے جب صرف فائل ناموں کے بجائے مکمل فائل پاتھ کے ساتھ کام کریں۔

ایک اور طریقہ استعمال کرنا شامل ہے۔ متن کو فلٹر کرنے اور تبدیل کرنے کے لیے ایک طاقتور اسٹریم ایڈیٹر۔ مناسب ریگولر ایکسپریشن تیار کرکے، فائل نام اور توسیع کو الگ کر سکتا ہے۔ مثال کے طور پر، حکم فائل کے نام اور ایکسٹینشن کو الگ کرتا ہے، انہیں علیحدہ کیپچر گروپس میں رکھتا ہے۔ یہ تکنیک لچکدار ہے اور فائل نام کے پیچیدہ ڈھانچے کو سنبھال سکتی ہے۔ ان اضافی ٹولز اور طریقوں کو دریافت کرنے سے آپ کی باش میں فائل ڈیٹا میں ہیرا پھیری کرنے کی صلاحیت بڑھ جاتی ہے، مختلف اسکرپٹنگ منظرناموں کے لیے مضبوط حل فراہم کرتے ہیں۔

باش فائل ہیرا پھیری پر اکثر پوچھے گئے سوالات

  1. کا مقصد کیا ہے کمانڈ؟
  2. یہ آخری مدت کے بعد سب کچھ اتار کر فائل نام سے ایکسٹینشن کو ہٹاتا ہے۔
  3. کیسے کرتا ہے کمانڈ کام؟
  4. یہ فائل نام میں آخری مدت کے بعد سب کچھ لے کر ایکسٹینشن نکالتا ہے۔
  5. کیا کرتا ہے فراہم کردہ اسکرپٹ میں کرتے ہیں؟
  6. یہ فیلڈ سیپریٹر کو ایک مدت پر سیٹ کرتا ہے، جس سے فائل نام کو حصوں میں تقسیم کیا جا سکتا ہے۔
  7. کیوں استعمال کریں۔ ایک میں سکرپٹ؟
  8. یہ فائل کے نام سے ایکسٹینشن کو مؤثر طریقے سے ہٹا کر فیلڈز کی تعداد کو ایک ایک کر دیتا ہے۔
  9. ریگولر ایکسپریشنز فائل کا نام اور ایکسٹینشن نکالنے میں کس طرح مدد کرتے ہیں؟
  10. وہ پیٹرن کی مماثلت اور گروپ بندی کی اجازت دیتے ہیں، جو فائل نام کے مختلف حصوں کو الگ کر سکتے ہیں۔
  11. باش میں کسٹم فنکشن استعمال کرنے کا کیا فائدہ ہے؟
  12. ایک حسب ضرورت فنکشن کوڈ کو دوبارہ استعمال کرنے اور پڑھنے کی اہلیت کو بڑھاتا ہے، اسکرپٹ کو مزید ماڈیولر بناتا ہے۔
  13. وہ کیسے فائل ناموں کے ساتھ مدد؟
  14. یہ ایک مکمل فائل پاتھ سے فائل کا نام نکالتا ہے، اختیاری طور پر ایکسٹینشن کو ہٹاتا ہے۔
  15. کر سکتے ہیں۔ فائل نام کی ہیرا پھیری کے لیے استعمال کیا جائے؟
  16. جی ہاں، فائل ناموں کے حصوں کو تبدیل کرنے اور الگ کرنے کے لیے ریگولر ایکسپریشنز استعمال کر سکتے ہیں۔

فائل کا نام اور ایکسٹینشن نکالنے کے حل کو لپیٹنا

آخر میں، باش میں فائل نام اور ایکسٹینشن نکالنا مختلف طریقوں سے مؤثر طریقے سے حاصل کیا جا سکتا ہے، ہر ایک مختلف ضروریات اور ترجیحات کے لیے موزوں ہے۔ چاہے پیرامیٹر کی توسیع، awk، sed، یا حسب ضرورت فنکشنز کا استعمال کریں، یہ تکنیکیں لچکدار اور موثر حل پیش کرتی ہیں۔ ان کمانڈز کو سمجھنا اور استعمال کرنا اس بات کو یقینی بناتا ہے کہ اسکرپٹ متعدد ادوار اور دیگر پیچیدگیوں کے ساتھ فائل ناموں کو بغیر کسی غلطی کے ہینڈل کر سکتی ہے۔