'echo [AZ]*' também corresponde a nomes de arquivos em letras minúsculas?

'echo [AZ]*' também corresponde a nomes de arquivos em letras minúsculas?

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 vmcorresponder 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 globasciirangesopção bash shell

(shopt -s globasciiranges; echo [A-Z]*)

Veja a Pattern matchingseção deman bash

informação relacionada