मैं एक पायथन प्रोग्राम पर काम कर रहा हूं जो अंडे (प्लोन) का भारी उपयोग करता है। इसका मतलब है कि पाइथन कोड से भरे 198 निर्देशिकाएं हैं जिन्हें मैं डिबगिंग के दौरान खोजना चाहता हूं। क्या केवल उन निर्देशिकाओं में .py फ़ाइलों को खोजने का कोई अच्छा तरीका है, असंबद्ध कोड और बड़ी बाइनरी फ़ाइलों से परहेज करना?आप कोड के माध्यम से कैसे गुजरते हैं जो कई अलग-अलग निर्देशिकाओं में रहता है?
उत्तर
find DIRECTORY -name "*.py" | xargs grep PATTERN
वैसे, इस लेखन के बाद से, मैं ack है, जो एक बेहतर समाधान है की खोज की है।
grep -r -n "PATTERN" --include="*.py" DIRECTORY
मुझे लाइन नंबर शामिल करने के लिए -n पसंद है। आश्चर्य की बात है, 'खोज | xargs' संस्करण थोड़ा तेज है। – joeforker
मुझे लगता है कि grep हालांकि लगातार खोजों में तेजी से बढ़ता है। –
< निर्देशिका > -name '* .py' -exec ग्रेप < पैटर्न > {} \ प्राप्त होता है;
यह संस्करण 26 गुना धीमा है xargs या standalone grep समाधान क्योंकि यह एक बार के बजाय grep 16,836 बार निष्पादित करता है। – joeforker
लेकिन यदि आप इसे \ + के बजाय + के साथ समाप्त करते हैं, तो यह xargs समाधान के बराबर है, सिवाय इसके कि आपके पथनामों में रिक्त स्थान नहीं है, तो इसे तोड़ना नहीं है। –
मैं दृढ़ता से ack की सिफारिश करेंगे, एक ग्रेप विकल्प नहीं है, (वेबसाइट से) "विषम स्रोत कोड के बड़े पेड़ के साथ प्रोग्रामर के उद्देश्य से"
मैं भी इन दिनों एक बहुत पावती का उपयोग करें।
# Add zcml to the xml type:
--type-add
xml=.zcml
# Add more files the plone type:
--type-add
plone=.dtml,.zpt,.kss,.vpy,.props
# buildout config files
--type-set
buildout=.cfg
# Include our page templates to the html type so we can limit our search:
--type-add
html=.pt,.zpt
# Create txt file type:
--type-set
txt=.txt,.rst
# Define i18n file types:
--type-set
i18n=.pot,.po
# More options
--follow
--ignore-case
--nogroup
याद रखना महत्वपूर्ण है कि पावती अगर विस्तार इसके विन्यास में नहीं है फ़ाइलें नहीं मिलेगा है: मैं यह थोड़ा सभी प्रासंगिक फ़ाइल प्रकारों को खोजने के लिए tweak किया था। सभी उपलब्ध प्रकारों के लिए "एके --हेल्प-प्रकार" देखें।
मुझे यह भी लगता है कि आप omelette का उपयोग कर रहे हैं ताकि आप सभी संबंधित फाइलों को grep/ack/ढूंढ सकें?
GNU idutils भी है यदि आप बड़े स्रोत पेड़ में पहचानकर्ताओं के लिए बहुत तेज़ी से grep करना चाहते हैं। इसे mkid चलाकर, और इसकी कॉन्फ़िगरेशन फ़ाइल को tweaking .py फ़ाइलों को अनदेखा करने के लिए अग्रिम में एक खोज डेटाबेस बनाने की आवश्यकता है)। यदि आप बिल्डआउट का उपयोग करते हैं, तो z3c.recipe.tag इसका ख्याल रखता है।
Emacs 'rgrep कमांड की खोज के बाद से मेरा grepping जीवन अधिक संतोषजनक तरीका है।
कहें कि मैं प्लोन के स्रोत में 'आईपोर्टलेटडाटाप्रोवाइडर' ढूंढना चाहता हूं। मुझे क्या करना:
M-x rgrep
- Emacs खोज स्ट्रिंग के लिए संकेत देता (IPortletDataProvider)
- ... तो जो खोज करने के लिए फ़ाइलें (* .py)
- ... तो जो निर्देशिका (~/प्लोन/buildout-कैश/अंडे)। अगर मैं पहले से ही एक फ़ाइल संपादित कर रहा हूं, तो यह उस फ़ाइल की निर्देशिका में चूक जाता है, जो आमतौर पर वही है जो मैं चाहता हूं।
परिणाम एक नए बफर में दिखाई देते हैं। शीर्ष पर find | xargs grep
कमांड Emacs भाग गया है। सभी मैचों को हाइलाइट किया गया है। मैं मानक पाठ खोज आदेशों का उपयोग कर बफर खोज सकता हूं। सबसे अच्छा, मैं उस फ़ाइल को खोलने के लिए एक मैच पर एंटर (या क्लिक) हिट कर सकता हूं।
यह काम करने का एक शानदार तरीका है। मुझे पसंद है कि मुझे find | xargs grep
तर्क अनुक्रमों को याद रखने की आवश्यकता नहीं है, लेकिन अगर मुझे इसकी ज़रूरत है तो वह सारी शक्ति है।
बस मामले में आप एक गैर कमांडलाइन ओएसएस समाधान चाहते हैं ...
मैं pycharm का उपयोग करें। यह buildout के लिए समर्थन में बनाया गया है।आप इसे बिल्डआउट जेनरेट किए गए बिन/इंस्टेंस पर इंगित करते हैं और यह प्रोजेक्ट बाहरी प्रस्तुतियों को उदाहरण के द्वारा उपयोग किए जाने वाले सभी अंडों पर सेट करता है। फिर सभी आईडीई का आत्मनिरीक्षण और कोड नेविगेशन अच्छी तरह से काम करता है। गोटो परिभाषा, गोटो इंस्टेंस, समर्थन और पाठ्यक्रम की खोज को पुन: सक्रिय करना।
यह समस्या collective.recipe.omelette के निर्माण के लिए प्रेरणा थी। यह एक बिल्डआउट रेसिपी है जो आपके काम के सेट से सभी अंडों को एक निर्देशिका संरचना में सिमलिंक कर सकती है, जिसे आप अपनी पसंदीदा खोज उपयोगिता को इंगित कर सकते हैं।
grep- उन्मुख उत्तरों लाल बालियां हैं। वे आपको फ़ाइलों के कई संस्करणों को खोजने के लिए नेतृत्व करेंगे, लेकिन कोड के अन-उपयोग किए गए संस्करणों में से एक (बिल्डआउट समय के साथ अलग-अलग अंडे रिलीज प्राप्त कर सकता है)। आमलेट का प्रयोग करें, और जीआरपी सिम्लिंक संरचना जो इसे उत्पन्न करता है। –
मैं प्लोन और पाइडव-फीचर 'ग्लोबल्स ब्राउजर' (ग्रहण या अपताना स्टूडियो के साथ) के साथ काम करते समय omelette खोजने के लिए grin की पुन: सिफारिश करता हूं।
यहां ग्रिन के बारे में पढ़ें: http://rhodesmill.org/brandon/2011/grin-and-search-it – pbauer
ग्रहण में omelette + src फ़ोल्डर आयात करने के लिए सहायक स्क्रिप्ट्स हैं: http://svn.plone.org/svn /collective/collective.eclipsescripts/trunk/README.txt –
और बस क्योंकि वहाँ पर्याप्त जवाब नहीं हैं ...
आप नियमित तौर पर विकसित कर रहे हैं, तो यह अच्छी तरह से लायक Pydev (या और भी आसान, Aptana स्टूडियो - जो एक संशोधित ग्रहण है) के साथ ग्रहण स्थापित करने के लिए प्रयास है , इस मामले में खोजने के उपकरण सही हैं।
यहां एक ऐसी स्क्रिप्ट है जो आयात बिल्डआउट + ओमेलेट को Aptana में अनुमति देती है: http://svn.plone.org/svn/collective/collective.eclipsescripts/trunk/README.txt –
ओपनग्राक स्रोत खोज और नेविगेशन के लिए एक उत्कृष्ट विकल्प है। हालांकि, जावा पर चलता है।
मैं वास्तव में चाहते हैं वहाँ की तरह http://opengrok.plone.org/
- 1. कई निर्देशिकाओं में मेकफ़ाइल
- 2. आप स्रोत कोड के अपने पुस्तकालयों के माध्यम से कैसे खोज करते हैं?
- 3. प्रोसेसिंग के लिए आर में एकाधिक निर्देशिकाओं से कई फाइलें कैसे पढ़ सकते हैं?
- 4. आप सी कोड से पायथन कोड कैसे कॉल करते हैं?
- 5. एक PHP का उपयोग कैसे करें संबंधित निर्देशिकाओं के साथ कई निर्देशिकाओं/उप निर्देशिकाओं में शामिल है
- 6. आप $ _FILES सरणी के माध्यम से कैसे लूप करते हैं?
- 7. आप व्यू आईडी के माध्यम से कैसे लूप करते हैं?
- 8. एसएएस कई निर्देशिकाओं को देख रहा है
- 9. आप मोबाइल डिवाइस के लिए सीएसएस मेनू कैसे बनाते हैं जो पृष्ठ ज़ूम के बावजूद समान आकार में रहता है?
- 10. हडोप जॉब कई निर्देशिकाओं से इनपुट फाइलें ले रहा है
- 11. आप लाइसेंसCheckerCallback.ERROR_NOT_MARKET_MANAGED त्रुटि कोड से कैसे निपटते हैं?
- 12. आप "चेक आउट" कोड कैसे करते हैं?
- 13. रेल पॉलीमोर्फिक चेकबॉक्स के माध्यम से कई हैं
- 14. एंड्रॉइड Runtime.getRuntime()। Exec()। निर्देशिकाओं के माध्यम से नेविगेशन
- 15. सेक्शननामकेपैथ कई रिश्तों के माध्यम से
- 16. बैश पटकथा, फ़ोल्डर में फ़ाइलों के माध्यम से पाश में विफल रहता है
- 17. MySQL कई टैग्स (कई से कई रिश्ते) के लिए पूछताछ में शामिल है जो सभी टैग से मेल खाता है?
- 18. आप setTimeout() के कई उदाहरणों को कैसे प्रबंधित करते हैं?
- 19. आप .NET में एल्गोरिदमिक कोड में कैसे जोर देते हैं?
- 20. आप डेटाबेस के कई संस्करणों को कैसे बनाए रखते हैं?
- 21. Jquery XHR जिसके परिणामस्वरूप एक डोम परिवर्तन होता है जो रीफ्रेश के माध्यम से रहता है, आदि
- 22. Django में, आप कई से कई संबंधित वर्गों का क्षेत्र कैसे प्राप्त करते हैं?
- 23. एसएसआरएस में आप कई परिणाम सेट कैसे जोड़ते हैं?
- 24. सिनात्रा में आप कैसे "पहले" फिल्टर बनाते हैं जो
- 25. क्या NSUserDefaults Appstore में किसी ऐप के अपडेट के माध्यम से जारी रहता है?
- 26. क्या सी # में कोई कीवर्ड मौजूद है जो स्थानीय चर कई कॉलों पर बना रहता है?
- 27. gmake कई निर्देशिकाओं से ऑब्जेक्ट फ़ाइलों की सूची प्राप्त करें
- 28. कैपिस्ट्रानो कई होस्ट तैनाती के लिए विफल रहता है
- 29. आप कोड के माध्यम से Google को कैसे सूचित करते हैं कि एक अपडेट किया गया साइटमैप है?
- 30. आप कोड को बाहर निकालने से कैसे सुरक्षित करते हैं?
खोजने कुछ था '$ PYTHONPATH गूंज | sed "s /:/g" '-name" * .py "| xargs grep pATTERN – joeforker
यह अच्छा है। उस बारे में सोचा नहीं था। –
सौभाग्य से $ PYTHONPATH में प्रविष्टियों में से कोई भी '' 'नहीं है। – joeforker