Cómo invertir una expresión grep

La siguiente expresión grep enumera con éxito todos los archivos .exe y .html en el directorio actual y subdirectorios.

ls -R |grep -E .*[\.exe]$\|.*[\.html]$ 

¿Cómo invierto este resultado para enumerar aquellos que no son un .html o .exe en su lugar? (Eso es != .)

Use la opción de línea de comandos -v o --invert-match ,

 ls -R |grep -v -E .*[\.exe]$\|.*[\.html]$ 
 grep -v 

o

 grep --invert-match 

También puedes hacer lo mismo usando find :

 find . -type f \( -iname "*" ! -iname ".exe" ! -iname ".html"\) 

Más información aquí .

Agregue la opción -v a su comando grep para invertir los resultados.

  grep "subscription" | grep -v "spec" 

Como se indicó varias veces, la inversión se logra mediante la opción -v a grep . Permítanme agregar la nota (afortunadamente entretenida) de que podrían haberlo descifrado hojeando el texto de ayuda de grep :

 grep --help | grep invert 

-v, –invert-match selecciona líneas que no coinciden