`खोजें` वाइल्डकार्ड अजीब व्यवहार - क्यों?


9

locate "*.png".pngअपेक्षा के साथ समाप्त होने वाली सभी फाइलें लौटाता है।

locate "test.*"कुछ भी वापस नहीं करता है, लेकिन testमेरे सिस्टम में नामित फाइलें हैं ।

locate "*test"testअपेक्षा के साथ समाप्त होने वाली सभी फाइलें लौटाता है।

locate "test*"कुछ भी वापस नहीं करता है, लेकिन testमेरे सिस्टम में शुरू होने वाली फाइलें हैं ।

वाइल्डकार्ड केवल "समाप्त होने" के लिए ही काम क्यों करते हैं?


1
क्या आपने मेल करने वाली फ़ाइलों को बनाने के बाद स्थित test*और फिर से बनाया है test.*?
इग्नासियो वाज़केज़-अब्राम्स

@ इग्नासियोवेज़ज़-अब्राम्स: हाँ
विटोरियो रोमियो

जवाबों:


12

locate "test.*" कुछ भी वापस नहीं करता है, लेकिन मेरे सिस्टम में परीक्षण नाम की फाइलें हैं।

.को डॉट के रूप में माना जाता है, रेगेक्स के एक मनमाने चरित्र के रूप में test.*नहीं , इसलिए मेल नहीं खाता है test, लेकिन test.foo

locate "test*"कुछ भी वापस नहीं करता है, लेकिन testमेरे सिस्टम में शुरू होने वाली फाइलें हैं ।

फ़ाइल के लिए पूर्ण पथ संग्रहीत करता है , इसलिए परीक्षण से शुरू होने वाली फ़ाइलों को खोजने के लिए, आपको उपयोग करना चाहिए locate "*/test*"

अंतिम बिंदु भ्रामक हो सकता है, क्योंकि locate fooइसमें कुछ भी शामिल है foo, इसलिए पैटर्न की व्याख्या की जाती है *foo*। ऐसा लगता है कि पैटर्न तारों में संलग्न नहीं है, अगर पैटर्न में पहले से ही एक वाइल्डकार्ड है।

डिस्क्लेमर : मैंने कुछ परीक्षण किया और ये मेरे निष्कर्ष हैं, मैं उन्हें मैन पेज का हवाला देकर साबित नहीं कर सकता, जो बहुत ही अल्पविकसित लगता है।


3
मेरे man locateपास में: यदि --regex निर्दिष्ट नहीं है, तो PATTERNs में ग्लोबिंग वर्ण हो सकते हैं। यदि किसी PATTERN में कोई ग्लोबबिंग वर्ण नहीं हैं, तो व्यवहार का पता लगाएं जैसे कि पैटर्न * PATTERN * थे।
गनीउर_ग्निउरफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.