बॅशमध्ये फाइलनाव आणि विस्तार कसे वेगळे करावे

Bash

परिचय:

बॅशमध्ये फाइल्ससह काम करताना, तुम्हाला अनेकदा फाईलचे नाव त्याच्या विस्तारापासून वेगळे करावे लागेल. एक सामान्य दृष्टीकोन `कट` कमांड वापरते, परंतु ही पद्धत एकाधिक कालावधी असलेल्या फाइलनावांसह अयशस्वी होऊ शकते.

उदाहरणार्थ, `a.b.js` सारखे फाइलनाव चुकीच्या पद्धतीने `a.b` आणि `js` ऐवजी `a` आणि `b.js` मध्ये विभाजित केले जाईल. जरी पायथन `os.path.splitext()` सह एक सोपा उपाय पुरवत असला तरी, Python वापरणे नेहमीच सर्वात प्रभावी पर्याय असू शकत नाही. हा लेख बॅशमध्ये हे कार्य साध्य करण्यासाठी चांगल्या पद्धती शोधतो.

आज्ञा वर्णन
${variable%.*} फाईल नावातून विस्तार काढण्यासाठी पॅरामीटर विस्तार.
${variable##*.} फाईल नावातून विस्तार काढण्यासाठी पॅरामीटर विस्तार.
awk -F. फील्ड सेपरेटरला एका कालावधीसाठी सेट करते, फाइलनाव विभाजित करण्यासाठी वापरले जाते.
OFS="." awk मध्ये आउटपुट फील्ड सेपरेटर, विस्ताराशिवाय फाइलनाव पुनर्रचना करण्यासाठी वापरले जाते.
NF-- awk मध्ये फील्डची संख्या एकाने कमी करते, प्रभावीपणे विस्तार काढून टाकते.
${BASH_REMATCH} बॅश मधील रेग्युलर एक्सप्रेशनमधील जुळण्या ठेवणारा ॲरे.
local variable Bash मधील फंक्शनमध्ये स्थानिक स्कोप असलेले व्हेरिएबल घोषित करते.

बॅश सोल्यूशन्सचे तपशीलवार ब्रेकडाउन

प्रदान केलेल्या स्क्रिप्ट्स बॅशमध्ये फाइलनाव आणि त्याचा विस्तार विभक्त करण्यासाठी विविध पद्धती देतात. प्रथम स्क्रिप्ट बॅश पॅरामीटर विस्तार वापरते. चल शेवटच्या कालावधीपासून स्ट्रिंगच्या शेवटपर्यंत सर्व काही काढून टाकून विस्तार काढून टाकते शेवटच्या कालावधीनंतर सर्वकाही घेऊन विस्तार कॅप्चर करते. बहुतेक फाइलनाव संरचनांसाठी ही पद्धत सरळ आणि कार्यक्षम आहे. दुसरी स्क्रिप्ट वापरते , युनिक्स सारख्या वातावरणात एक शक्तिशाली मजकूर-प्रक्रिया साधन. वापरून कालावधीसाठी फील्ड सेपरेटर सेट करून -F., ते फाइलनाव भागांमध्ये विभाजित करण्यास अनुमती देते. आउटपुट फील्ड विभाजक, , आणि सह फील्डची संख्या कमी करणे फाईल नावाच्या विस्ताराशिवाय पुन्हा एकत्र करण्याचे तंत्र आहे.

तिसरी स्क्रिप्ट बॅशमध्ये नियमित अभिव्यक्ती वापरते, फायदा घेते regex जुळणीमध्ये गट कॅप्चर करण्यासाठी. ही स्क्रिप्ट एक नमुना वापरते जी फाइलनाव दोन गटांमध्ये विभाजित करते: एक मूळ नावासाठी आणि एक विस्तारासाठी. शेवटी, कस्टम फंक्शन स्क्रिप्ट फंक्शनमध्ये पॅरामीटर विस्तार लॉजिक एन्कॅप्स्युलेट करते, कोड पुन्हा वापरण्यायोग्यता आणि वाचनीयता वाढवते. ते वापरते फंक्शनमध्ये व्हेरिएबल्स स्कोप्ड ठेवण्यासाठी घोषणा, मोठ्या स्क्रिप्ट्समध्ये अनपेक्षित दुष्परिणामांना प्रतिबंधित करते. प्रत्येक पद्धत समान समस्येचे निराकरण करण्यासाठी भिन्न दृष्टीकोन दर्शवते, बॅश स्क्रिप्टिंगची अष्टपैलुत्व आणि सामर्थ्य दर्शवते.

बॅशमध्ये पॅरामीटर विस्तार वापरणे

बॅश स्क्रिप्टिंग

फाइलनाव आणि विस्तार वेगळे करण्यासाठी Awk वापरणे

Awk सह बॅश

बॅशमध्ये नियमित अभिव्यक्ती वापरणे

regex सह बॅश स्क्रिप्टिंग

#!/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"

बॅशमध्ये फाइल मॅनिपुलेशनसाठी पर्यायी पद्धती शोधत आहे

आधीच चर्चा केलेल्या पद्धतींव्यतिरिक्त, फाइलनावे आणि विस्तार हाताळण्यासाठी बॅशमध्ये इतर उपयुक्त तंत्रे आहेत. अशी एक पद्धत वापरणे समाविष्ट आहे आणि आज्ञा पाथमधून फाइलनाव काढण्यासाठी वापरले जाऊ शकते, तर निर्देशिका पथ पुनर्प्राप्त करते. या कमांडस पॅरामीटर विस्तारासह एकत्रित केल्याने फाइलनावे आणि विस्तार प्रभावीपणे वेगळे होऊ शकतात. उदाहरणार्थ, वापरणे फाईल नावातून विस्तार काढून टाकते. फक्त फाइलनावांच्या ऐवजी पूर्ण फाईल मार्गांसह कार्य करताना हा दृष्टीकोन विशेषतः उपयुक्त आहे.

दुसरी पद्धत वापरणे समाविष्ट आहे , मजकूर फिल्टर आणि रूपांतरित करण्यासाठी एक शक्तिशाली प्रवाह संपादक. योग्य नियमित अभिव्यक्ती तयार करून, फाइलनाव आणि विस्तार वेगळे करू शकतो. उदाहरणार्थ, आदेश फाइलनाव आणि विस्ताराचे विभाजन करते, त्यांना वेगळ्या कॅप्चर गटांमध्ये ठेवून. हे तंत्र लवचिक आहे आणि जटिल फाइलनाव संरचना हाताळू शकते. ही अतिरिक्त साधने आणि पद्धती एक्सप्लोर केल्याने बॅशमध्ये फाइल डेटा हाताळण्याची तुमची क्षमता वाढवते, विविध स्क्रिप्टिंग परिस्थितींसाठी मजबूत उपाय प्रदान करते.

बॅश फाइल मॅनिपुलेशनवर वारंवार विचारले जाणारे प्रश्न

  1. चा उद्देश काय आहे आज्ञा?
  2. ते शेवटच्या कालावधीनंतर सर्व काही काढून टाकून फाईलच्या नावातून विस्तार काढून टाकते.
  3. कसे करते आदेश कार्य?
  4. फाईलच्या नावातील शेवटच्या कालावधीनंतर सर्वकाही घेऊन ते एक्स्टेंशन काढते.
  5. काय प्रदान केलेल्या स्क्रिप्टमध्ये करू?
  6. हे फील्ड सेपरेटरला कालावधीसाठी सेट करते, फाइलनाव भागांमध्ये विभाजित करण्यास अनुमती देते.
  7. का वापरावे मध्ये स्क्रिप्ट?
  8. हे फील्डची संख्या एकाने कमी करते, फाइलनावमधून विस्तार प्रभावीपणे काढून टाकते.
  9. रेग्युलर एक्स्प्रेशन्स फाइलनाव आणि विस्तार काढण्यात कशी मदत करतात?
  10. ते पॅटर्न मॅचिंग आणि ग्रुपिंगसाठी परवानगी देतात, जे फाइलनावाचे वेगवेगळे भाग वेगळे करू शकतात.
  11. बॅशमध्ये कस्टम फंक्शन वापरण्याचा काय फायदा आहे?
  12. कस्टम फंक्शन कोडची पुनर्वापरता आणि वाचनीयता वाढवते, स्क्रिप्ट अधिक मॉड्यूलर बनवते.
  13. कसे फाइलनावांसाठी मदत?
  14. हे संपूर्ण फाईल मार्गावरून फाइलनाव काढते, पर्यायाने विस्तार काढून टाकते.
  15. करू शकतो फाइलनाव फेरफारसाठी वापरता येईल का?
  16. होय, फाइलनावांचे भाग बदलण्यासाठी आणि विलग करण्यासाठी रेग्युलर एक्सप्रेशन वापरू शकतात.

फाईलनाव आणि एक्स्टेंशन एक्स्ट्रॅक्शनसाठी सोल्यूशन्स गुंडाळणे

शेवटी, बॅशमध्ये फाइलनावे आणि विस्तार काढणे विविध पद्धतींद्वारे प्रभावीपणे साध्य केले जाऊ शकते, प्रत्येक भिन्न गरजा आणि प्राधान्यांसाठी अनुकूल आहे. पॅरामीटर विस्तार, awk, sed किंवा सानुकूल कार्ये वापरत असोत, ही तंत्रे लवचिक आणि कार्यक्षम उपाय देतात. या कमांडस समजून घेणे आणि वापरणे हे सुनिश्चित करते की स्क्रिप्ट एकाधिक कालावधी आणि इतर गुंतागुंतीसह फाइलनावे हाताळू शकतात त्रुटीशिवाय.