क्या bash की * अल्फ़ान्यूमेरिक ऑर्डर में फ़ाइलों से मेल खाता है?


25

मैं फ़ाइल नाम क्रम में एक साथ फ़ाइलों का एक गुच्छा समवर्ती करना चाहता हूँ।

क्या यह मान लेना सुरक्षित है कि यह मुझे अल्फ़ान्यूमेरिक क्रम में देगा?

cat * 

यानी वही आदेश जो lsदेता है।

जवाबों:


26

संक्षिप्त उत्तर: हाँ यह होगा।

से बैश आदमी पेज:

शब्द बंटवारे के बाद, जब तक -f विकल्प सेट नहीं किया गया हो (द सेट बिल्ड देखें), बैश प्रत्येक शब्द को '*', '?' और '[' अक्षर के लिए स्कैन करता है। यदि इनमें से एक अक्षर दिखाई देता है, तो शब्द को एक पैटर्न के रूप में माना जाता है, और पैटर्न से मेल खाने वाले फ़ाइल नामों की वर्णानुक्रमिक रूप से क्रमबद्ध सूची के साथ प्रतिस्थापित किया जाता है।


6
ध्यान दें कि "वर्णमाला" स्थानीय सेटिंग्स (विशेष रूप से $LC_COLLATE) के आधार पर भिन्न होती है ।
ग्रेविटी

4
@ सच सच है, फिर भी यह एक lsही प्रणाली के रूप में एक ही उत्पादन में परिणाम होगा।
ब्लडफिलिया

8

संक्षिप्त उत्तर हाँ है, लेकिन आपको इस बारे में जागरूक होने की आवश्यकता है कि यह क्या सोचता है कि अल्फ़ान्यूमेरिक क्रम होना चाहिए, क्योंकि यह आपके मन में आने वाले प्राकृतिक क्रम के अनुरूप नहीं हो सकता है।

उदाहरण के लिए, अपने सिस्टम पर पता लगाने के लिए ऊपरी और निचले मामले को कैसे संभाला जाए, साथ ही संख्याओं के अनुक्रम पर कुछ परीक्षण चलाएं।

एक सामान्य समस्या जो मैंने एक ग्लोब द्वारा लौटाई गई फाइलों की क्रमबद्ध फाइलों में क्रमांकित फाइलों में दर्ज की है। मुझे अक्सर ऐसी फाइलें दी जाती हैं, जैसे:

blah_1.txt
blah_2.txt
...
blah_10.txt
blah_11.txt

हालाँकि, इस प्रयोग से एक ग्लोब *उन्हें इस क्रम में वापस नहीं करेगा, इसके बदले आपको कुछ मिलेगा:

blah_1.txt
blah_10.txt
blah_11.txt
...
blah_2.txt
blah_20.txt
...

तो - इस समस्या को आप करेंगे फ़ाइलें, या तो यह है कि एकल अंक नाम बदलने फ़ाइलों के लिए लौट आए सूची पर कुछ हेरफेर करने के लिए या तो की जरूरत (यानी शून्य अग्रणी है से बचने के लिए blah_01.txt, blah_02.txt, आदि)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.