2016-04-27 3 views
6

निम्न आदेश में खोजें रिकर्सिवली वर्तमान निर्देशिका और सभी उप-निर्देशिकाबैश: पाइपिंग Grep

grep -r -n 'some string' . 

यह आदेश रिकर्सिवली वर्तमान निर्देशिका और सभी उप माध्यम से खोज के माध्यम से खोज से 'कुछ स्ट्रिंग' की सभी घटनाओं पाता है निर्देशिका और फार्म की सभी फाइलों को रिटर्न * .axvw

find . -name '*.axvw' 

मैं तो मैं रिकर्सिवली वर्तमान निर्देशिका के माध्यम से खोज, लेकिन केवल उन्हीं फ़ाइलों को खत्म को देखकर 'कुछ स्ट्रिंग' की सभी आवृत्तियां मिल एक साथ इन दो आदेशों रखना चाहते हैं 'axvw में '।

जब मैं चल निम्न आदेश कुछ भी नहीं वापस आ गया था की कोशिश की:

find . -name '*js' | grep -n 'some string' 

क्या मैं गलत कर रहा हूँ?

+1

देखें यहाँ उत्तर दिया: http://serverfault.com/questions/9822/recursive-text-search-with-grep-and-file-patterns –

+0

[कैसे पाइप का उपयोग करने की संभावित डुप्लिकेट भीतर -exec में ढूंढें] (https://stackoverflow.com/questions/21825393/how-to-use-pipe-within-exec-in-find) – koppor

उत्तर

8

आप find में -exec विकल्प का उपयोग कर सकते हैं:

find . -name '*.axvw' -exec grep -n 'some string' {} + 

वरना xargs का उपयोग करें:

find . -name '*.axvw' -print0 | xargs -0 grep -n 'some string' 
+2

'-exec grep -n 'कुछ स्ट्रिंग' {} +' प्रदर्शन पर xargs के साथ 'find -exec' प्रतिस्पर्धात्मक प्रतिस्पर्धा करेगा, और 2006 POSIX spec द्वारा उपलब्ध होने की गारंटी है। –

+0

धन्यवाद, हाँ \ '' – anubhava

1

find . -name '*js' -exec grep -n 'some string' {} \;

मुझे लगता है कि काम करना चाहिए।

संपादित करें: बस मस्ती के लिए, आप मुझे विश्वास करते हुए एक डबल grep का भी उपयोग कर सकते हैं।

find . | grep 'some string' | grep js

+1

के बजाय' + 'का उपयोग करने के बारे में अच्छा बिंदु, नहीं, आपके द्वारा सुझाए गए" डबल grep "में मदद नहीं मिलती है - यह दोनों चरणों में फ़ाइल नामों को नहीं, सामग्री नहीं दे रहा है। –

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