Estou trabalhando no diretório raiz e quero imprimir entradas de diretório começando com uma letra maiúscula.
$ echo [A-Z]*
Applications Library Network System Users Volumes bin cores dev etc home installer.failurerequests net private sbin tmp usr var vm
O resultado me confunde porque eu não esperava
cores dev etc home installer.failurerequests net private sbin tmp usr var vm
corresponder ao meu padrão.
Como posso escrever um padrão glob que corresponda apenas a letras maiúsculas?
Responder1
Isso ocorre porque o padrão glob [A-Z]
geralmente não corresponde a letras maiúsculas. Especificamente, ele se expande de acordo com
a sequência de agrupamento e o conjunto de caracteres da localidade atual
Se quiser arquivos começando com letra maiúscula, você pode usar
echo [[:upper:]]*
ou defina a localidade explicitamente
(LC_COLLATE=C; echo [A-Z]*)
ou use a globasciiranges
opção bash shell
(shopt -s globasciiranges; echo [A-Z]*)
Veja a Pattern matching
seção deman bash