निर्देशिका में फ़ाइलों के माध्यम से बैश लूप

Bash Loop Through Files Directory



उबंटू में, बैश सहित, लूप ने कई फाइलों पर संचालन लागू करना संभव बना दिया है। लूपिंग सबसे प्रभावी चीज है क्योंकि यह उपयोगकर्ता को एक छोटी कोड-लाइन का उपयोग करके आइटम पर एक ही तर्क को बार-बार लागू करने की अनुमति देता है।

निर्देशिका में फाइलों पर लूपिंग की अवधारणा को समझने के लिए, आपको उबंटू एप्लिकेशन और सेवाओं तक पहुंच की आवश्यकता है। जब आपके पास कुछ विशेषाधिकार होते हैं, तो आप केवल फाइलों और निर्देशिकाओं के साथ ही काम कर सकते हैं।







आपको उबंटू ऑपरेटिंग सिस्टम पर बैश इंस्टॉल करना चाहिए था। कुछ संस्थापनों में, यह संकुल के अद्यतन में मूलभूत रूप से संस्थापित होता है। यदि यह पहले से स्थापित है, तो आपको संस्करण को अपग्रेड करने की आवश्यकता है क्योंकि यह 4 से ऊपर होना चाहिए। वर्तमान मार्गदर्शिका को जारी रखने के लिए, आपको संस्करण को 4 से ऊपर रखने की आवश्यकता है। अपने सिस्टम में पहले से स्थापित बैश के संस्करण की जांच करने के लिए, उपयोग करें उबंटू टर्मिनल पर कमांड।



$दे घुमा के--संस्करण



तो आपको फाइलों और निर्देशिकाओं पर कुछ कार्य करने होंगे। आप अपनी पसंद की किसी भी निर्देशिका पर नीचे दिए गए आदेशों को निष्पादित कर सकते हैं। लेकिन सटीक होने के लिए, एक नई निर्देशिका बनाना बेहतर होता है ताकि जब आप इसे खोलते हैं तो इसके सभी सामान सीधे आसानी से उपलब्ध हो जाते हैं।





निर्देशिका बनाने के लिए पहला कदम है। हमने निर्देशिका abc का एक नमूना नाम लिया है। कमांड निष्पादित करके एक निर्देशिका बनाएं।

$एमकेडीआईआरएबीसी



डायरेक्टरी बनाने के बाद, अब आपको उस पर सभी कमांड्स को करने की जरूरत है। इसलिए डायरेक्टरी बनने के बाद उस डायरेक्टरी में स्विच करें। नीचे उद्धृत आदेश का प्रयोग करें:

$सीडीएबीसी

डायरेक्टरी में जाने के बाद अब टच कमांड का इस्तेमाल कर कुछ फाइल्स बनाएं।

$स्पर्शfile1.txt

उबंटू में फाइल बनाने के लिए कई तरीकों का इस्तेमाल किया जाता है। टच कमांड के अलावा, हमने एक फाइल बनाने और उसमें सामग्री को सामूहिक रूप से एक कमांड में जोड़ने के लिए इको कमांड का उपयोग किया है:

$फेंक दियालिनक्स, उबंटू, पोस्टग्रेस्क्ल>file7.txt

यह फ़ाइल एक साधारण निर्देशिका पर बनाई गई है जो वर्तमान में डिफ़ॉल्ट रूप से चल रही है। तो नई बनाई गई निर्देशिका का नाम कमांड प्रॉम्प्ट के साथ नहीं जोड़ा जाता है। आप टच कमांड में रेंज और एक्सपेंशन का उपयोग करके भी फाइल बना सकते हैं।

$स्पर्शफ़ाइल{1..8}।टेक्स्ट

इस कमांड के इस्तेमाल से नई फाइलों में .txt एक्सटेंशन एक ही कमांड के इस्तेमाल से बन जाएंगे।

उसके बाद, अब आप उस निर्देशिका के माध्यम से लूप कर सकते हैं जो नव निर्मित है। फ़ाइल नाम प्रदर्शित करें। जैसा कि हमें निर्देशिका में मौजूद फाइलों के माध्यम से लूप करना है, हमें एक लूप की आवश्यकता है। लूप्स उपयोग करने के लिए बहुत प्रभावी होते हैं क्योंकि वे कम समय में डेटा प्राप्त करते हैं, जिसमें कम इनपुट की आवश्यकता होती है। यहां हम लूप के लिए उपयोग करेंगे। इस लूप का उपयोग करके, प्रत्येक फ़ाइल का नाम अगली पंक्ति में दिखाया जाएगा।

$के लिये फ़ाइल में *;करना फेंक दिया $फ़ाइल;किया हुआ

* इस निर्देशिका में मौजूद सभी फाइलों के लिए प्रयोग किया जाता है। यह 'फॉर' लूप को सभी फाइलों को हथियाने की अनुमति देता है। लेकिन आउटपुट को सटीक बनाने के लिए, आप तारांकन चिह्न के साथ कुछ शब्द जोड़ सकते हैं। उदाहरण के लिए, फ़ाइल से शुरू होने वाली सभी फ़ाइलों के लिए 'फ़ाइल-*' का उपयोग किया जाता है। और *.txt उन फ़ाइलों को लाने के लिए जिनमें .txt एक्सटेंशन हैं। हम लेख में आगे इन उदाहरणों का उपयोग करेंगे।

यह लूप काम करेगा ताकि यह निर्देशिका से सभी फाइलों को लाएगा और फिर सभी फाइलों को इको कमांड के माध्यम से प्रदर्शित करेगा। यहां $ चिह्न फ़ाइल के नाम का प्रतिनिधित्व करता है। परिणाम से, आप देख सकते हैं कि प्रत्येक फ़ाइल का नाम दिखाया गया है।

फ़ाइलों के नाम प्रदर्शित करके बनाई गई फ़ाइलों को सत्यापित करने के बाद, अब फ़ाइलों में मान दर्ज करने का समय है क्योंकि बनाई गई फ़ाइलें खाली हैं। यह प्रत्येक फ़ाइल को टेक्स्ट एडिटर में खोलकर और फिर डेटा लिखकर मैन्युअल रूप से किया जा सकता है। दूसरा विकल्प टर्मिनल में कमांड के माध्यम से प्रत्येक फ़ाइल में डेटा दर्ज करना है। लेकिन प्रत्येक फ़ाइल के लिए एकल कमांड के माध्यम से प्रत्येक फ़ाइल में डेटा दर्ज करने के लिए समय की आवश्यकता होती है। लेकिन यह एक ही कमांड में लूप के लिए उपयोग करके आसानी से और सामूहिक रूप से किया जा सकता है।

$के लिये फ़ाइल में *;करना फेंक दिया -2 $फ़ाइल लिनक्स उबंटू> $फ़ाइल;किया हुआ

कमांड के निष्पादन के बाद, हमारे द्वारा बनाई गई प्रत्येक फ़ाइल में मान दर्ज किया गया है। जब इको के साथ प्रयोग किया जाता है, तो '-ई' ध्वज फ़ाइल में नई लाइन को सुरक्षित रखेगा। दर्ज किए गए डेटा को देखने के लिए, आप 'abc' निर्देशिका में नेविगेट कर सकते हैं। अब कोई भी टेक्स्ट फाइल खोलें। फ़ाइल अब खाली नहीं है।

'$file फ़ाइल में पहले फ़ाइल नाम दिखाएगा, और आपके द्वारा दर्ज किए गए डेटा का पूर्वावलोकन दूसरी पंक्ति पर किया जाएगा क्योंकि इसके बाद उपयोग किए गए शब्दों को दूसरी पंक्ति में स्थानांतरित करने के लिए उपयोग किया जाता है। आप कमांड के माध्यम से दर्ज किए गए डेटा की जांच भी कर सकते हैं।

$के लिये फ़ाइल में *;करना बिल्ली $फ़ाइल;किया हुआ

कैट कमांड का उपयोग डायरेक्टरी की सभी फाइलों में मौजूद डेटा को लाने के लिए किया जाता है।

डेटा दर्ज करने और उसे लाने की प्रक्रिया दोनों एक ही कमांड के माध्यम से की जा सकती है।

$के लिये फ़ाइल में *;करना फेंक दिया-और$फ़ाइल बैश प्रोग्रामिंग> $फ़ाइल;बिल्ली $फ़ाइल;किया हुआ

पहला कदम फ़ाइल में डेटा लिखना और फिर उसे प्रदर्शित करना है। जब आप कमांड निष्पादित करते हैं, तो आउटपुट निम्नानुसार होगा:

प्रत्येक फ़ाइल में समान मान होता है। यह 'फॉर' लूप के कारण है।

हम डेटा लाने और मान डालने आदि के लिए लूप जानते हैं, लेकिन लूप का उपयोग बैकअप बनाने के लिए भी किया जाता है। इन फ़ाइलों के अंत में एक्सटेंशन .bak है। अब प्रत्येक फ़ाइल का बैकअप देखने के लिए शेल में बैकअप कमांड निष्पादित करें।

$के लिये फ़ाइल में *;करना सीपी $फ़ाइल $फ़ाइल।पीछे;किया हुआ;

सीपी कीवर्ड का उपयोग सभी फाइलों का बैकअप लेने के लिए किया जाता है। अब उन फाइलों को देखना है जिन पर यह कमांड लागू होती है। हम कमांड का उपयोग इस प्रकार करते हैं:

$रास- NS

अब यह आउटपुट से दिखाई देता है कि फाइलों का विवरण दिखाया गया है। दिनांक, फ़ाइल नाम, उपयोगकर्ता नाम, और वह समय भी जब इसे हटाया गया था। साथ ही, आपके पास प्रत्येक फ़ाइल की एक सटीक प्रति है।

अगर हम केवल jpeg फाइल चाहते हैं। हम इसे कमांड में इस्तेमाल करेंगे

$के लिये फ़ाइल में *जेपीईजी;करना फेंक दिया $फ़ाइल;किया हुआ

यह केवल छवियों के नाम लाएगा।

एक साधारण खोज भी वही कार्य कर सकती है। यह सभी फाइलों को .sh के एक्सटेंशन के साथ लाएगा।

$पाना। - नाम*श्री

हम लूप के लिए खोजशब्द का उपयोग करेंगे।

$के लिये फ़ाइल में *;करनापाना। फ़ाइल।*;किया हुआ

यह सभी फाइलों को वर्तमान निर्देशिका में लाएगा। इनमें .bak, .jpeg, .txt के एक्सटेंशन हैं। आदि।

अब, यदि आप सभी निर्देशिका फ़ाइलों का नाम और उनके अंदर डेटा देखना चाहते हैं, तो यह भी 'for' लूप द्वारा किया जाता है।

$के लिये फ़ाइल में *;करना फ़ाइल $फ़ाइल;किया हुआ

निष्कर्ष

किसी भी निर्देशिका में फ़ाइलों के माध्यम से लूप करना अब कठिन नहीं है, जैसा कि हम जानते हैं, बैश में लूप का उपयोग करना और लिनक्स ऑपरेटिंग सिस्टम पर प्रदर्शन करना। यह ट्यूटोरियल 'फॉर' लूप का उपयोग करके निर्देशिका पर संचालन बनाने, एक्सेस करने और प्रदर्शन करने के लिए एक संपूर्ण मार्गदर्शिका है।