रूबी में निर्देशिकाएँ के साथ ग्लोब का उपयोग करना

"ग्लोबिंग"फाइलें (साथ) Dir.glob) रूबी में आपको दी गई डायरेक्टरी में केवल उन फाइलों का चयन करने की अनुमति देता है, जैसे कि सभी XML फाइलें, जैसे। भले ही Dir.blog है पसंद नियमित अभिव्यक्ति, यह नहीं है। की तुलना में यह बहुत सीमित है माणिकनियमित अभिव्यक्ति है और शेल विस्तार वाइल्डकार्ड से अधिक निकटता से संबंधित है।

ग्लोबिंग के विपरीत, एक डाइरेक्टरी में सभी फाइलों पर पुनरावृति, निर्देशिका के साथ की जा सकती है Dir.foreach तरीका।

उदाहरण

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

 #! / usr / bin / env माणिक


 Dir.glob ('*। Rb')। प्रत्येक do | f |

 एफ डालता है

 समाप्त

instagram viewer

वाइल्डकार्ड और अधिक

सीखने के लिए केवल कुछ वाइल्डकार्ड हैं:

  • * - मैच शून्य या अधिक वर्ण। एक ग्लोब जिसमें केवल तारांकन होता है और कोई अन्य वर्ण या वाइल्डकार्ड वर्तमान निर्देशिका की सभी फाइलों से मेल नहीं खाता है। तारांकन आमतौर पर फ़ाइल एक्सटेंशन के साथ संयुक्त होता है यदि खोज को कम करने के लिए अधिक वर्ण नहीं होते हैं।
  • ** - सभी निर्देशिकाओं का पुनरावर्ती मिलान करें। इसका उपयोग डायरेक्टरी ट्री में उतरने के लिए किया जाता है और वर्तमान डायरेक्टरी में केवल फाइलों के बजाय वर्तमान निर्देशिका की उप-निर्देशिकाओं में सभी फाइलों को खोजने के लिए किया जाता है। इस वाइल्डकार्ड को नीचे दिए गए उदाहरण कोड में खोजा गया है।
  • ? - किसी भी एक पात्र का मिलान करें। यह उन फ़ाइलों को खोजने के लिए उपयोगी है जिनका नाम किसी विशेष प्रारूप में है। उदाहरण के लिए, 5 अक्षर और .xml एक्सटेंशन को व्यक्त किया जा सकता है ... एक्सएमएल.
  • [A-z] - कैरेक्टर सेट में किसी भी पात्र का मिलान करें। सेट या तो पात्रों की एक सूची हो सकता है या हाइफ़न वर्ण के साथ अलग की गई सीमा हो सकती है। कैरेक्टर सेट उसी सिंटैक्स का अनुसरण करते हैं और उसी तरीके से व्यवहार करते हैं जैसे कि चरित्र नियमित अभिव्यक्तियों में सेट करता है।
  • {a, b} - मैच पैटर्न a या b। हालांकि यह एक नियमित अभिव्यक्ति मात्रा की तरह दिखता है, यह नहीं है। उदाहरण के लिए, नियमित अभिव्यक्ति में, पैटर्न एक {1,2} 1 या 2 'ए' अक्षर से मेल खाएगा। ग्लोबिंग में, यह स्ट्रिंग से मेल खाएगा a1 या a2. अन्य पैटर्न इस निर्माण के अंदर घोंसले के शिकार हो सकते हैं।

एक बात पर विचार करना है मामले की संवेदनशीलता. यह निर्धारित करने के लिए ऑपरेटिंग सिस्टम पर निर्भर है कि क्या है test.txt तथा परीक्षा। टेक्स्ट एक ही फाइल को देखें। लिनक्स और अन्य प्रणालियों पर, ये अलग-अलग फाइलें हैं। विंडोज पर, ये उसी फ़ाइल को संदर्भित करेंगे।

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

नोट करने के लिए एक अंतिम बात है डिर [globstring] सुविधा विधि। यह कार्यात्मक रूप से समान है Dir.glob (ग्लोबस्ट्रिंग) और शब्दार्थ रूप से सही भी है (आप किसी निर्देशिका को अनुक्रमित कर रहे हैं, बहुत कुछ सरणी की तरह)। इस कारण से, आप देख सकते हैं डिर [] अधिक से अधिक बार Dir.glob, लेकिन वे एक ही चीज हैं।

वाइल्डकार्ड का उपयोग करने वाले उदाहरण

निम्नलिखित उदाहरण कार्यक्रम कई अलग-अलग संयोजनों में कई पैटर्न प्रदर्शित कर सकता है।

 #! / usr / bin / env माणिक


 # सभी .xml फ़ाइलें प्राप्त करें

 डिर [ '*। Xml']


 # 5 अक्षर और .jpg एक्सटेंशन वाली सभी फाइलें प्राप्त करें

 डिर [ '... जेपीजी']


 # सभी jpg, png और gif चित्र प्राप्त करें

 डिर '[*। {Jpg, png, gif}']


 # डायरेक्टरी ट्री में उतरें और सभी jpg चित्र प्राप्त करें

 # नोट: यह वर्तमान निर्देशिका में jpg चित्र भी दर्ज करेगा

 डिर [ '** / *। Jpg']


 # यूनी से शुरू होने वाली सभी निर्देशिकाओं में उतरें और सभी खोजें

 # jpg चित्र

 # नोट: यह केवल एक निर्देशिका के नीचे आता है

 डिर [ 'विश्वविद्यालय ** / *। Jpg']


 # यूनी और सभी के साथ शुरू होने वाली सभी निर्देशिकाओं में उतरें

 # निर्देशिकाओं के उपनिर्देशिका Uni और खोजने के साथ शुरू

 # सभी .jpg चित्र

 डिर [ 'विश्वविद्यालय ** / ** / *। Jpg']

instagram story viewer