मैं कुछ पाठ के लिए स्रोत फ़ाइलों में grep कैसे कर सकता हूं?


8

फिलहाल मैं दो आदेशों का उपयोग कर रहा हूं, मुझे यकीन है कि एक बेहतर तरीका होना चाहिए ...

wim@wim-acer:~/ffmpeg$ find . -name "*.h" -print0 | xargs -0 grep -i invalid\ preset
wim@wim-acer:~/ffmpeg$ find . -name "*.c" -print0 | xargs -0 grep -i invalid\ preset

1
कर देता है -name '*.[ch]' काम?
glenn jackman

जवाबों:


10

एसीके (या डेबियन / उबंटू, ack-grep पर) संस्करण नियंत्रण या बायनेरिज़ जैसी गैर-स्रोत फ़ाइलों की उपेक्षा करेगा। बहुत उपयोगी।

उपरोक्त। के रूप में .c और .h फ़ाइलों को खोजने के लिए:

ack-grep -i --cc "invalid preset"

--cc (लंबा रूप है --type cc ) केवल .c .h & amp; .xs फ़ाइलें। के साथ filetypes की पूरी सूची देखने योग्य है ack-grep --help type। अधिकांश समय, आपको विशेष रूप से आवश्यकता नहीं होगी --type, क्योंकि यह आम तौर पर केवल फाइलों को खोजने के लिए होगा, और फिर आप उन फाइलों को नहीं देखेंगे, जैसे बायनेरी, बैकअप और संस्करण नियंत्रण फाइलें।


4

grep कार्यक्रम स्वयं पुनरावर्ती खोज सकता है और केवल कुछ फ़ाइलों को खोजने के लिए एक विकल्प भी स्वीकार करता है। निम्नलिखित आपके दो के बराबर है find आदेश देता है।

grep -Ri --include=*.[ch] invalid\ preset .

यह मेरे लिए तब काम आया जब मुझे कोष्ठक से छुटकारा मिला
Mike

1

खोज आदेश खुद को grep कह सकते हैं।

find . \( -name "*.c" -o -name "*.h" \) -exec grep -i "invalid preset" {} \; -print

और उसके रूपांतर।


इसे स्पष्ट रूपांतर में बदल दिया। ;-)
Keith

0

मैं आपके साथ ऐसा कुछ जोड़ सकता हूं ~/.bashrc

alias cppgrep='grep -Ri "--include=*.[hc]" "--include=*.cpp" "--include=*.hpp"'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.