Estoy probando los siguientes globos en un shell bash:
$ ls -d .*
. .. .a .ab
$ ls .a*
.a .ab
$ ls .[!.]*
.a .ab
$ ls .[!.]?*
.ab
¿No debería la última expresión significar "un punto seguido exactamente de un punto que no sea un punto seguido de cero o más caracteres"? ¿Por qué no coincide .a
?
Respuesta1
Estás equivocado. Significa "un punto seguido exactamente de un punto seguido de un carácter seguido de cero o más caracteres". .a
no tiene suficientes caracteres para igualarlo.
Pero en realidad, simplemente prepárate dotglob
.