O token Regex dentro da classe de caractere para negação é ^
, não !
.
Então você precisa:
ls | grep '^[^0-9]'
Se você usar ls | grep ^[!0-9]
, então, em []
, !
será tratado literalmente e 0-9
será expandido da maneira usual.
Também para esse tipo de tarefa trivial, use shell globbing, o Regex é um pouco demais para isso, e também não analisa ls
; você poderia simplesmente fazer:
ls [^[:digit:]]*
ls [![:digit:]]*
Observe que bash
suporta ^
e !
como token de negação de padrão dentro da classe de caracteres durante a globulação.
Se você não quer depender de você, locale
:
ls [^[0-9]]*
ls [![0-9]]*