समाधान 1 (संयोजन find
और grep
)
इस समाधान का उद्देश्य grep
प्रदर्शन से निपटने के लिए नहीं है, बल्कि एक पोर्टेबल समाधान दिखाने के लिए है: 2.5 से अधिक पुराने बिजीबॉक्स या जीएनयू संस्करण के साथ भी काम करना चाहिए।
find
निर्देशिका फू और बार को बाहर करने के लिए उपयोग करें :
find /dir \( -name foo -prune \) -o \( -name bar -prune \) -o -name "*.sh" -print
फिर संयोजन find
और गैर-पुनरावर्ती उपयोग grep
, एक पोर्टेबल समाधान के रूप में:
find /dir \( -name node_modules -prune \) -o -name "*.sh" -exec grep --color -Hn "your text to find" {} 2>/dev/null \;
समाधान 2 (पुनरावर्ती उपयोग grep
):
आप इस समाधान को पहले से ही जानते हैं, लेकिन मैं इसे सबसे हाल ही में और कुशल समाधान के बाद से जोड़ता हूं। ध्यान दें कि यह एक कम पोर्टेबल समाधान है लेकिन अधिक मानव पठनीय है।
grep -R --exclude-dir=node_modules 'some pattern' /path/to/search
कई निर्देशिकाओं को बाहर करने के लिए, --exclude-dir
निम्न का उपयोग करें :
--exclude-dir={node_modules,dir1,dir2,dir3}
समाधान 3 (एजी)
यदि आप बार-बार कोड के माध्यम से खोज करते हैं, तो Ag (The Silver Searcher) grep का एक अधिक तेज़ विकल्प है, जो कोड खोजने के लिए अनुकूलित है। उदाहरण के लिए, यह स्वचालित रूप से फ़ाइल और निर्देशिका में सूचीबद्ध पर ध्यान नहीं देता .gitignore
है, तो आप के लिए एक ही बोझिल विकल्पों गुजर को बाहर रखने के लिए की जरूरत नहीं है grep
या find
।