grep

2014-06-10 8 views
8

का उपयोग करके एकाधिक पैटर्न को बहिष्कृत करने के लिए मैं grep से "*log*" और ./tags दोनों को बाहर करना चाहता हूं।grep

क्या मैं करना है:

grep -rI "PatternToSearch" ./path --exclude="*log*" 

या इस:

grep -rI "PatternToSearch" ./path --exclude="tags" 

यह दोनों एक ग्रेप में पैटर्न को बाहर विलय करने के लिए संभव है?

+0

साथ दोहराया गया, तुम भी' find' का उपयोग कर इसे टीका सकता है लगता है। -नाम ./tags -prune -o -not -name "* लॉग *" -exec grep -HI पैटर्न {} + ' –

उत्तर

3

एक और --exclude <pattern> है: अलग पैटर्न के

grep -rI "PatternToSearch" ./path --exclude={*log*,tags} 

बस का उपयोग "":

grep -rI "PatternToSearch" --exclude="*log*" --exclude="tags" . 
+0

धन्यवाद @anubhava यह काम करता है, लेकिन जानना उत्सुक है कि क्या कोई और तरीका है जहां मैं लिखता हूं - ' – DragonX

+1

दुर्भाग्यवश' - exclude' को छोड़कर regex या विस्तारित पैटर्न को एकल विकल्प में 1 से अधिक पैटर्न निर्दिष्ट करने की अनुमति नहीं है। – anubhava

+2

- exclude के साथ 1 से अधिक पैटर्न को अनदेखा करने के लिए आप '--exclude = {* log *, टैग}' का उपयोग कर सकते हैं। – Nancy

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