Estou tentando os seguintes globs em um shell bash:
$ ls -d .*
. .. .a .ab
$ ls .a*
.a .ab
$ ls .[!.]*
.a .ab
$ ls .[!.]?*
.ab
A última expressão não deveria significar "um ponto seguido por exatamente um não-ponto seguido por zero ou mais caracteres"? Por que não corresponde .a
?
Responder1
Você está enganado. Significa "um ponto seguido por exatamente um não-ponto seguido por um caractere seguido por zero ou mais caracteres". .a
não tem caracteres suficientes para corresponder.
Mas realmente, basta definir dotglob
.