Risposte:
Utilizzare l'opzione della riga di comando -vo --invert-match,
ls -R |grep -v -E .*[\.exe]$\|.*[\.html]$
grep -v
o
grep --invert-match
Puoi anche fare la stessa cosa usando find:
find . -type f \( -iname "*" ! -iname ".exe" ! -iname ".html"\)
Maggiori informazioni qui .
findcomando è la soluzione più semantica a questo problema XY. Combinare lse grepper questo scopo sembra nel migliore dei casi. Questa dovrebbe essere la risposta accettata. (+1)
Aggiungi l' -vopzione al tuo grepcomando per invertire i risultati.
grep "subscription" | grep -v "spec"
-v/--invert-matchnon capovolterà necessariamente se il codice di ritornogrepindica l'esecuzione corretta, ma corrisponderà invece alle righe che altrimenti non sarebbero abbinate. Coloro che stanno cercando di invertire il codice di ritorno (cioè avere successo se tutte le linee non corrispondono al modello, piuttosto che almeno uno) dovrebbero usare! grep. Questo viene usato negli espressioni condizionali, ad esempio:if ! ls | grep -qE ".(\.exe)$"; then echo No .exe files in $(pwd); fi.