2014-09-05 7 views
18

के साथ कई फ़ाइलों में एकाधिक तारों की खोज करें मुझे पता है कि एकल स्ट्रिंग को कई फ़ाइलों में Sublime 3 के साथ कैसे खोजा जाए (here समझाया गया)।सब्लिमे 3

मुझे क्या करना है कई स्ट्रिंग्स कई फ़ाइलों में खोजना है। मैं Find in files और सेटिंग के लिए जा रहा कोशिश की है:

Field: string1 \& string2 
Where: /path_to_folder_containing_the_files_I_want_to_ search/ 

(जहां string1 और string2 तार मैं लिए खोज करना चाहते हैं), लेकिन यह है कि काम करने के लिए प्रतीत नहीं होता।

क्या यह सब किया जा सकता है?

+0

गेब्रियल, मुझे लगता है कि आपका प्रश्न http://superuser.com – samy

+0

@samy पर बेहतर होगा? यहां 'सब्लिम' के बारे में हजारों प्रश्न हैं, बस देखने के लिए टैग पर क्लिक करें। – Gabriel

+2

हाँ मैं सहमत हूं; यह मुझे सामान्य कंप्यूटिंग सॉफ्टवेयर के बारे में एक प्रश्न की तरह लग रहा था, प्रोग्रामिंग नहीं - इसलिए मैं सोच रहा था कि सुपरसियर पर शानदार टैग सबसे तार्किक था: http: // superuser।com/प्रश्न/टैग/sublime-text-3 – samy

उत्तर

25

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

सब्लिम सभी खुले फ़ोल्डर्स में खोज का समर्थन करता है और रेगेक्स का उपयोग कर सकता है। इसलिए दोनों का उपयोग करके, आप उन सभी फ़ोल्डरों को खोल या जोड़ सकते हैं जिन्हें आप प्रोजेक्ट में खोजना चाहते हैं और एकाधिक कीवर्ड खोजने के लिए रेगेक्स का उपयोग कर सकते हैं। आपके मामले में यह होगा निम्नलिखित (regex बॉक्स .* आइकन जाँच करना सुनिश्चित करें):

Find: (string1|string2) 
Where: <open folders> 
+0

4 स्ट्रिंग्स या अधिक पर 'स्ट्रिंग 1', 'स्ट्रिंग 2' के स्थान पर रेगेक्स का उपयोग करते समय, त्रुटि के साथ रेगेक्स क्रैश होता है: "नियमित अभिव्यक्ति से मेल खाने की जटिलता पूर्वनिर्धारित सीमाओं से अधिक हो जाती है। प्रत्येक विकल्प को बनाने के लिए नियमित अभिव्यक्ति को दोबारा करने का प्रयास करें राज्य मशीन द्वारा अस्पष्ट। " क्या यह इस प्रकार की खोज से संबंधित है? – john

+1

@john: क्या आप अपना नमूना रेगेक्स पोस्ट कर सकते हैं? बस सरल 4 विकल्पों के साथ प्रयास किया, और यह मेरे पर ठीक काम करता है। – Sherzod

+0

स्पष्ट रूप से मैं पूरी तरह से पूरे सेट को encapsulating करने के बजाय, प्रत्येक व्यक्तिगत स्ट्रिंग regexing था, और यह दुर्घटना का कारण बन गया। जैसे मैं यह चाहता था: '^। * (?: string1 | string2 | string3)। * $' – john

0

नहीं, आप केवल सब्लिमेम में एक ही समय में एक चीज़ की खोज कर सकते हैं, जैसे कि अधिकांश अन्य संपादकों के बारे में मुझे पता है। इसके आस-पास एकमात्र संभावित तरीका रेगेक्स सर्च का उपयोग करना है (अपनी खोज शब्द दर्ज करते समय फ़ील्ड के बाईं ओर दिए गए बटन पर क्लिक करें) और एक अच्छी रेगेक्स के साथ आना जो आपके द्वारा देखी जा रही सभी चीज़ों से मेल खाता है। या, आप एक समय में प्रत्येक मैच को खोज सकते हैं।

grep -e "foo" *.txt | grep -e "bar" 
:

एक विकल्प के रूप में, ऊपर आदि तुम जैसे आदेशों को चलाने के लिए grep जैसे मानक कमांड लाइन पाठ प्रसंस्करण उपयोगिताओं पर brushing, sed, awk, खोल के आदेश पाइपिंग क्षमताओं के साथ उनकी शक्ति का मेल की अनुमति पर विचार

जो पैटर्न foo के लिए मौजूदा निर्देशिका में सभी .txt फ़ाइलों के माध्यम से खोज करेंगे, उसके बाद सभी परिणामी लाइनों फिर पैटर्न bar के लिए, किसी भी क्रम में खोज की जाएगी ताकि अंतिम उत्पादन दोनों foo और उन में bar होगा।

+0

मुझे फ़ाइल में एक ही समय_ दोनों स्ट्रिंग्स की घटना की खोज करने की आवश्यकता है ताकि एक समय में उन्हें खोज सकें, मेरे काम पर थोड़ा अधिक काम नहीं करेगा अंश। स्पष्टीकरण के लिए धन्यवाद यह संभव नहीं है, मैं कुछ regex के साथ आने की कोशिश करेंगे। – Gabriel

+1

@ गैब्रियल एक और विकल्प है जिसे मैंने घर के रास्ते पर सोचा था - आप एक ही समय में दो चीजों की खोज के लिए मानक कमांड लाइन उपकरण जैसे 'grep', 'awk',' sed', आदि का उपयोग कर सकते हैं। एक साधारण उदाहरण के रूप में, 'grep file.txt -e "foo" | grep "बार" '। यह किसी भी क्रम में, उसी पंक्ति पर 'foo' और' bar' की तलाश करेगा। यह एक रेगेक्स के साथ करना मुश्किल है। – MattDMo

+0

यदि आप इसे कई फ़ाइलों पर एक बार में उपयोग करने के लिए विस्तारित कर सकते हैं, तो आप इसे एक व्यवहार्य विकल्प के रूप में अपने उत्तर में जोड़ सकते हैं। – Gabriel

1

मैं उदात्त पाठ 2 पर इस की कोशिश की है, तो साथ ही उदात्त पाठ 3 पर काम करना चाहिए।

फील्ड: string1 string2 string3 string4 कहाँ:/path_to_folder_containing_the_files_I_want_to_ खोज/

नोट: अचिह्नित जो नियमित अभिव्यक्ति का अर्थ है और जाँच "" पूरे शब्द के लिए लग रही है, जिसका अर्थ है '*।'।

यह उल्लिखित फ़ोल्डर में सभी फ़ाइलों में "string1 string2 string3 string4" पैटर्न की खोज करेगा।

संबंधित मुद्दे