मैं कुछ फ़ाइल प्रकारों को छोड़कर सभी फ़ाइलों को प्राप्त करना चाहूंगा?


36

मैं grepकुछ फ़ाइल प्रकारों को छोड़कर किसी दिए गए फ़ोल्डर में पुनरावर्ती फ़ाइलों को कैसे करूं ?

उदाहरण के लिए, मैं अपने कार्यक्षेत्र फ़ोल्डर के भीतर एक स्ट्रिंग की तलाश कर रहा हूं, लेकिन यह sql फाइलों के अंदर खोज समाप्त करता है और क्रमबद्ध तार उत्पन्न करता है।

तो इस मामले में, मैं grepsql फ़ाइलों को छोड़कर कार्यक्षेत्र फ़ोल्डर में चाहूँगा ।

मैं अधिमानतः यदि संभव हो तो एक-लाइनर की तलाश कर रहा हूं।


5
ध्यान रखें कि लिनक्स और यूनिक्स और यूनिक्स-ए-लाइक्स में वास्तव में "फ़ाइल प्रकार" नहीं है जिस तरह से आप चाहते हैं। यह केवल कन्वेंशन द्वारा है कि फ़ाइल नाम में एक ".c" या ".txt" या ".sql" प्रत्यय है - वे प्रत्यय विंडोज-स्टाइल "एक्सटेंशन" भी नहीं हैं, बहुत कम संकेतक जो SQL या पाठ या C स्रोत कोड लाइव करते हैं फाइलों के अंदर।
ब्रूस एडिगर

जवाबों:



8

यह आपके लिए और .sql और .txt फ़ाइलों को बाहर कर देगा:

find /some/dir -type f ! -name '*\.sql' ! -name '*.txt' -print0 | xargs -0 grep 'foobar'

हालाँकि ऐसा लगता है कि ऐक आप जो करने की कोशिश कर रहे हैं उसके लिए एक बेहतर उपकरण होगा:

ack -a --nosql 'foobar' /some/dir

क्षमा करें, मैंने 'ack' भाग नहीं देखा और अपने उत्तर में डाल दिया, जिसे अब हटा दिया गया है।
मौका

एक अन्य उपयोगकर्ता नोटों कि ack - a --nobinaryद्विआधारी फ़ाइलें शामिल
माइकल Mrozek

फ़ाइल नाम पैटर्न में बैकस्लैश की आवश्यकता नहीं है।
Kusalananda
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.