¿'echo [AZ]*' también coincide con nombres de archivos en minúsculas?

¿'echo [AZ]*' también coincide con nombres de archivos en minúsculas?

Estoy trabajando en el directorio raíz y quiero imprimir entradas del directorio que comienzan con una letra mayúscula.

$ echo [A-Z]*
Applications Library Network System Users Volumes bin cores dev etc home installer.failurerequests net private sbin tmp usr var vm

El resultado me confunde porque no esperaba cores dev etc home installer.failurerequests net private sbin tmp usr var vmcoincidir con mi patrón.

¿Cómo puedo escribir un patrón global que solo coincida con letras mayúsculas?

Respuesta1

Esto se debe a que el patrón global [A-Z]generalmente no corresponde a letras mayúsculas. Específicamente se expande según

la secuencia de clasificación y el juego de caracteres de la configuración regional actual

Si desea archivos que comiencen con una letra mayúscula, puede usar

echo [[:upper:]]*

o establecer la configuración regional explícitamente

(LC_COLLATE=C; echo [A-Z]*)

o use la globasciirangesopción bash shell

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

Ver la Pattern matchingsección deman bash

información relacionada