Yanıtlar:
Komut satırı seçeneğini kullanın -vveya --invert-match,
ls -R |grep -v -E .*[\.exe]$\|.*[\.html]$
grep -v
veya
grep --invert-match
Aynı şeyi aşağıdakileri kullanarak da yapabilirsiniz find:
find . -type f \( -iname "*" ! -iname ".exe" ! -iname ".html"\)
Daha fazla bilgi burada .
findKomut bu XY sorunun en semantik bir çözümdür. Birleştirmek lsve grepbu amaç için en iyi ihtimalle kaba gibi görünüyor. Bu kabul edilen cevap olmalı. (+1)
Sonuçları tersine çevirme -vseçeneğini grepkomutunuza ekleyin .
grep "subscription" | grep -v "spec"
-v/--invert-matchille dönüş kodu olsun çevirmek olmazgrepbaşarılı işletildiğini gösterir, ancak bunun yerine başka türlü eşleşti olmaz çizgileri eşleşecek. Dönüş kodunu ters çevirmek isteyenler (yani, tüm satırlar en az bir yerine desenle eşleşmiyorsa başarılı olmalıdır) kullanmalıdır! grep. Bu bulgular, koşullu ifadelerde örneğin kullanın:if ! ls | grep -qE ".(\.exe)$"; then echo No .exe files in $(pwd); fi.