यूनिक्स में एक पुस्तकालय है जो आपके लिए फ़ाइल ग्लोबिंग ऑपरेशन कर सकता है। फ़ंक्शंस और प्रकार एक हेडर में घोषित किए जाते हैं glob.h
, इसलिए आपको इसकी आवश्यकता होगी #include
। यदि कोई टर्मिनल खोलता है तो टाइप करके ग्लोब के लिए एक मैन पेज खोलेंman 3 glob
आप उन सभी जानकारियों को प्राप्त कर लेंगे जो आपको फंक्शन्स का उपयोग करने के लिए जानने की आवश्यकता है।
नीचे एक उदाहरण दिया गया है कि कैसे आप उन फ़ाइलों को पॉप्युलेट कर सकते हैं जो ग्लोबिंग पैटर्न से मेल खाती हैं। glob
फ़ंक्शन का उपयोग करते समय कुछ चीजें हैं जिन्हें आपको ध्यान में रखने की आवश्यकता है।
- डिफ़ॉल्ट रूप से,
glob
फ़ंक्शन वर्तमान कार्यशील निर्देशिका में फ़ाइलों की तलाश करता है। किसी अन्य निर्देशिका को खोजने के लिए आपको निर्देशिका नाम को ग्लोबिंग पैटर्न में प्रस्तुत करना होगा जैसा कि मैंने अपने उदाहरण में सभी फाइलों को प्राप्त करने के लिए किया है/bin
।
- जब आप संरचना के साथ काम करते हैं तो
glob
कॉल करके आवंटित मेमोरी को साफ करने के लिए आप जिम्मेदार होते हैं globfree
।
मेरे उदाहरण में मैं डिफ़ॉल्ट विकल्पों का उपयोग करता हूं और कोई त्रुटि कॉलबैक नहीं। मैन पेज में उन सभी विकल्पों को शामिल किया गया है, जहाँ आप उपयोग करना चाहते हैं। यदि आप उपरोक्त कोड का उपयोग करने जा रहे हैं, तो मेरा सुझाव है कि इसे एक श्रेणी के रूप में NSArray
या कुछ इस तरह से जोड़ना चाहिए ।
NSMutableArray* files = [NSMutableArray array];
glob_t gt;
char* pattern = "/bin/*";
if (glob(pattern, 0, NULL, >) == 0) {
int i;
for (i=0; i<gt.gl_matchc; i++) {
[files addObject: [NSString stringWithCString: gt.gl_pathv[i]]];
}
}
globfree(>);
return [NSArray arrayWithArray: files];
संपादित करें: मैंने github पर एक gist बनाया है जिसमें उपरोक्त कोड NSArray + Globbing नामक श्रेणी में है ।