परिचय
ऐसे कई कारण हैं जिनकी वजह से आप बैश में किसी फ़ाइल का फ़ाइल नाम और एक्सटेंशन निकालना चाहेंगे:
-
फ़ाइल नाम या एक्सटेंशन में हेरफेर करने के लिए - आप फ़ाइल नाम या एक्सटेंशन को संशोधित करने के लिए उसे निकालना चाह सकते हैं, जैसे फ़ाइल नाम में उपसर्ग या प्रत्यय जोड़ना, या फ़ाइल एक्सटेंशन बदलना।
-
एक अद्वितीय नाम से एक फ़ाइल बनाने के लिए - आप एक अद्वितीय नाम के साथ एक नई फ़ाइल बनाने के लिए फ़ाइल नाम और एक्सटेंशन को निकालना चाह सकते हैं, जैसे कि फ़ाइल नाम में टाइमस्टैम्प या यादृच्छिक संख्या जोड़कर।
-
किसी स्क्रिप्ट या कमांड में फ़ाइल नाम या एक्सटेंशन का उपयोग करना - आप किसी स्क्रिप्ट या कमांड के लिए तर्क या इनपुट के रूप में उपयोग करने के लिए फ़ाइल नाम या एक्सटेंशन को निकालना चाह सकते हैं, जैसे इसे किसी प्रोग्राम में पास करना या निर्देशिका के समान नाम के साथ एक फ़ाइल बनाना।
-
फ़ाइल नाम या एक्सटेंशन से जानकारी निकालने के लिए – आप फ़ाइल नाम या एक्सटेंशन से जानकारी निकालने के लिए उसे निकालना चाह सकते हैं, जैसे दिनांक या फ़ाइल प्रकार।
इस लेख में, हम उन तीन सबसे सामान्य तरीकों पर एक नज़र डालेंगे जिनसे आप बैश में फ़ाइल नाम और फ़ाइल एक्सटेंशन निकाल सकते हैं। हम उनमें से प्रत्येक पर एक नज़र डालेंगे और आपको फायदे और नुकसान बताएंगे, ताकि आप एक शिक्षित निर्णय ले सकें कि कौन सा दृष्टिकोण आपके लिए सबसे उपयुक्त है।
विधि 1: का उपयोग करना बेसनाम आदेश
RSI basename
फ़ाइल पथ से फ़ाइल नाम और एक्सटेंशन निकालने के लिए कमांड का उपयोग किया जा सकता है:
filename=$(basename /path/to/file.txt)
echo $filename
हालाँकि यह विधि काफी सरल और उपयोग में आसान है, दुर्भाग्य से, ऐसा कोई तरीका नहीं है जिससे हम बिना किसी पोस्टप्रोसेसिंग के केवल फ़ाइल नाम (बिना किसी एक्सटेंशन के) निकाल सकें।
तुम भी उपयोग कर सकते हैं dirname
निर्देशिका पथ को अलग से निकालने का आदेश:
directory=$(dirname /path/to/file.txt)
echo $directory
पेशेवरों:
- का उपयोग करने के लिए सरल
- रिक्त स्थान वाले फ़ाइल नामों को सही ढंग से संभालता है
विपक्ष:
- केवल फ़ाइल नाम निकालता है और अतिरिक्त प्रोसेसिंग के बिना एक्सटेंशन को अलग से नहीं निकाल सकता
विधि 2: पैरामीटर विस्तार का उपयोग करना
बैश नामक एक सुविधा प्रदान करता है पैरामीटर विस्तार, जो आपको एक विशेष सिंटैक्स का उपयोग करके एक चर के कुछ हिस्सों को निकालने की अनुमति देता है। उदाहरण के लिए, आप एक वेरिएबल में संग्रहीत फ़ाइल पथ से फ़ाइल नाम और एक्सटेंशन निकालने के लिए निम्नलिखित सिंटैक्स का उपयोग कर सकते हैं:
filepath="/path/to/file.txt"
filename=${filepath##*/}
echo $filename
आप एक्सटेंशन को अलग से निकालने के लिए पैरामीटर विस्तार का भी उपयोग कर सकते हैं:
extension=${filename##*.}
echo $extension
पेशेवरों:
- लचीला
- फ़ाइल नाम और एक्सटेंशन दोनों को अलग-अलग निकाल सकते हैं,
- रिक्त स्थान वाले फ़ाइल नामों को सही ढंग से संभालता है
विपक्ष:
- फ़ाइल पथ को संग्रहीत करने के लिए एक वेरिएबल की आवश्यकता होती है
विधि 3: का उपयोग करना awk आदेश
RSI 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
निष्कर्ष
कुल मिलाकर, बैश में किसी फ़ाइल का फ़ाइल नाम और एक्सटेंशन निकालना फ़ाइलों के साथ काम करने और बैश शेल में विभिन्न कार्य करने के लिए एक उपयोगी तकनीक हो सकती है।
उल्लिखित प्रत्येक विधि के अपने फायदे और नुकसान हैं, और सबसे अच्छा विकल्प आपकी विशिष्ट आवश्यकताओं और प्राथमिकताओं पर निर्भर करेगा। कई दृष्टिकोणों से परिचित होना अक्सर उपयोगी होता है ताकि आप अपनी स्थिति के लिए सबसे उपयुक्त विकल्प चुन सकें।