जवाबों:
कमांड-लाइन विकल्प का उपयोग करें -v
या --invert-match
,
ls -R |grep -v -E .*[\.exe]$\|.*[\.html]$
grep -v
या
grep --invert-match
तुम भी एक ही काम कर सकते हैं find
:
find . -type f \( -iname "*" ! -iname ".exe" ! -iname ".html"\)
अधिक जानकारी यहाँ ।
find
आदेश इस XY समस्या का सबसे अर्थ समाधान है। संयोजन ls
और grep
इस उद्देश्य के लिए सबसे अच्छा लगता है। यह स्वीकृत उत्तर होना चाहिए। (+1)
परिणामों को पलटने के -v
लिए अपने grep
कमांड में विकल्प जोड़ें ।
grep "subscription" | grep -v "spec"
-v
/--invert-match
आवश्यक रूप से फ्लिप नहीं होगा कि क्या रिटर्न कोडgrep
सफल निष्पादन को इंगित करता है, लेकिन इसके बजाय लाइनों से मेल खाएगा जो अन्यथा मेल नहीं खाएंगे। जो लोग रिटर्न कोड को उल्टा करना चाह रहे हैं (अर्थात यदि सभी लाइनें पैटर्न से मेल नहीं खाती हैं, तो कम से कम एक का उपयोग करना चाहिए)! grep
। यह सशर्त अभिव्यक्तियों में उपयोग करता है, जैसेif ! ls | grep -qE ".(\.exe)$"; then echo No .exe files in $(pwd); fi
:।