2011-11-18 10 views
7

किसी विशेष निर्देशिका को छोड़कर grep का उपयोग करके एक पुनरावर्ती खोज कैसे करें?grep का उपयोग कर एक रिकर्सिव खोज में निर्देशिका को कैसे बाहर निकालना है?

पृष्ठभूमि: मेरे पास लॉग फ़ाइलों से युक्त एक बड़ी निर्देशिका है जिसे मैं खोज में समाप्त करना चाहता हूं। लॉग फ़ोल्डर को स्थानांतरित करना सबसे आसान तरीका है। दुर्भाग्य से मैं ऐसा नहीं कर सकता, क्योंकि परियोजना स्थान को अनिवार्य करती है।

कोई विचार यह कैसे करना है?

उत्तर

10

क्या आप इसे ढूंढ रहे हैं?

ग्रेप आदमी पृष्ठ से

:

--exclude-dir=DIR 
      Exclude directories matching the pattern DIR from recursive searches. 
+0

धन्यवाद एक टन, मैं कभी-कभी भूल जाता हूं, मैन पेज भी है :) – Kiran

+0

@ किरण चंद्रशेखर कृपया दिए गए उत्तर को स्वीकार करें। – FailedDev

+2

grep के पुराने संस्करणों में यह झंडा नहीं है जो शर्म की बात है :(। – ale

0

एक वैकल्पिक रूप में, यदि आप अपनी खोज में find उपयोग कर सकते हैं, यह भी उपयोगी हो सकता है:

find [directory] -name "*.log" -prune -o -type f -print|grep ...
[directory] वास्तव में वर्तमान निर्देशिका हो सकता है अगर आप चाहते हैं (बस एक . करेगा)।

अगला भाग, -name "*.log" -prune सभी एक साथ है। यह *.log पैटर्न के साथ फ़ाइल नामों की खोज करता है और उन्हें आपके परिणामों से बाहर कर देगा।

अगला -o (के लिए "या")

फिर, -type f -print जो कहते हैं कि "प्रिंट (stdout के लिए) किसी भी प्रकार के एक फाइल है कि।"

उन परिणामों में [directory] में पाए गए प्रत्येक फ़ाइल (कोई निर्देशिका नहीं लौटाई गई) शामिल होनी चाहिए जो .log में समाप्त हो जाती हैं। फिर आप grep परिणाम की आवश्यकता के अनुसार कर सकते हैं।

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

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