2008-10-01 12 views
27

पर केस-असंवेदनशील ग्लोब मुझे उन सभी फ़ाइलों को सूचीबद्ध करने की आवश्यकता है जिनके नाम 'SomeLongString' से शुरू होते हैं। लेकिन 'कुछ लोंगस्ट्रिंग' का मामला अलग-अलग हो सकता है। कैसे?zsh/bash

मैं zsh का उपयोग कर रहा हूं, लेकिन एक बैश समाधान का भी स्वागत है।

उत्तर

25

ZSH:

$ unsetopt CASE_GLOB 

या, यदि आप सामान्य रूप में केस-संवेदी ग्लोबिंग सक्षम करने के लिए नहीं करना चाहते हैं, तो आप इसे केवल अलग-अलग भाग के लिए सक्रिय कर सकते हैं:

$ print -l (#i)(somelongstring)* 

यह "somelongstring" (निचले/ऊपरी मामले के किसी भी संयोजन में) से शुरू होने वाली किसी भी फ़ाइल से मेल खाएगा। केस-असंवेदनशील ध्वज कोष्ठक के बीच सब कुछ के लिए लागू होता है और कई बार इस्तेमाल किया जा सकता है। अधिक जानकारी के लिए मैनुअल zshexpn(1) पढ़ें।

अद्यतन लगभग भूल गया, आप काम करने के लिए इस के लिए ग्लोबिंग extendend सक्षम करने के लिए:

setopt extendedglob 
+4

बीटीडब्लू, मुझे इसे काम करने के लिए EXTENDED_GLOB सेट अप करना पड़ा। –

+0

'setopt no_CASE_GLOB' के बारे में क्या? – ksoo

10

कितना गहरा अगर आपने इस प्रविष्टि करना चाहते हैं पर निर्भर करता है, find इस संबंध में काफी एक बहुत प्रदान करता है:

find . -iname 'SomeLongString*' -maxdepth 1 

यह केवल आप मौजूदा निर्देशिका में फ़ाइलों को दे देंगे। -name के बजाय -iname पैरामीटर यहां महत्वपूर्ण है।

25

बैश:

shopt -s nocaseglob 
+0

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

1

$ function i() { 
> shopt -s nocaseglob; $*; shopt -u nocaseglob 
> } 
$ ls *jtweet* 
ls: cannot access *jtweet*: No such file or directory 
$ i ls *jtweet* 
JTweet.pm JTweet.pm~ JTweet2.pm JTweet2.pm~ 
+0

** आपको इसे सुरक्षित रूप से फ़ंक्शन पर पास करने के लिए ग्लोब को उद्धृत करने की आवश्यकता है **। यदि '* jtweet *' कुछ भी मेल खाता है, तो फ़ंक्शन इसे देखने से पहले इसे विस्तारित किया जाएगा। (या अन्य 'shopt' सेटिंग्स के आधार पर त्रुटि या खाली स्ट्रिंग)। दिलचस्प विचार, यद्यपि। मुझे लगता है कि यदि आप 'i ls' * jtweet * 'चलाते हैं, तो यह अधिकतर काम करेगा, भले ही निर्देशिका में' jtweet.pm भी हो। गैर-ग्लोब तर्कों में, या ग्लोब में रिक्त स्थान या अन्य विशेष पात्रों के साथ कई संभावित समस्याएं हैं। –