के लिए grep में परिणाम ढूंढने के लिए मैं उपनिर्देशिका "कैश" को छोड़कर, वर्तमान उपनिर्देशिका में सभी फ़ाइलों की सूची बनाने के लिए सफलतापूर्वक उपयोग कर रहा हूं।पाइपिंग फास्ट निर्देशिका बहिष्करण
find . -wholename './cach*' -prune -o -print
अब मैं एक ग्रेप आदेश में पाइप यह करना चाहते हैं: यहाँ कोड की मेरी पहली बिट है। ऐसा लगता है कि यह सरल होना चाहिए:
find . -wholename './cach*' -prune -o -print | xargs grep -r -R -i "samson"
... लेकिन यह परिणाम लौट रहा है जो ज्यादातर कैश निर्देशिका से हैं। मैंने xargs संदर्भ को हटाने का प्रयास किया है, लेकिन यह वही करता है जो आप उम्मीद करते हैं, फ़ाइलों के बजाय फ़ाइल नामों के पाठ पर grep चला रहे हैं। मेरा लक्ष्य किसी भी फाइल में "सैमसन" ढूंढना है जो कैश की गई सामग्री नहीं है।
मैं इस उदाहरण में दोगुनी पकड़ का उपयोग करके शायद इस मुद्दे को प्राप्त कर दूंगा, लेकिन मैं इस बारे में बहुत उत्सुक हूं कि यह एक-लाइनर इस तरह से क्यों व्यवहार करता है। इन दो आदेशों का उपयोग करते समय भी इसे संशोधित करने के तरीके पर विचारों को सुनना अच्छा लगेगा (क्योंकि इस तरह से करने के लिए गति के फायदे हैं)।
(यह, btw 5 CentOS में है।)
धन्यवाद! रिकर्सन को हटाने के लिए मेरे लिए चाल क्या है। (पुरानी आदतों मुश्किल मर जाते हैं। संयोग से, कि मेरी ओर से एक गलत टाइप किया गया था, के रूप में मैं आमतौर पर "-r मैं मैं" का उपयोग करें, जो अनावश्यक प्रत्यावर्तन झंडे तुलना में बहुत अधिक समझ में आता है।) "Wholename" भाग ठीक था, चूंकि अवांछित उपनिर्देशिका वास्तव में वर्तमान निर्देशिका के मूल स्तर में है। तो यह अब है: 'पाते हैं। -wholename './cach*' -prune -ओ प्रिंट | xargs grep मैं मैं "सैमसन" ' – eternalnewb
बहुत बढ़िया, खुशी है कि यह कुछ सरल =] – newfurniturey