'echo [AZ]*'는 소문자 파일 이름에도 일치합니까?

'echo [AZ]*'는 소문자 파일 이름에도 일치합니까?

루트 디렉터리에서 작업 중이고 대문자로 시작하는 디렉터리 항목을 인쇄하고 싶습니다.

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

cores dev etc home installer.failurerequests net private sbin tmp usr var vm내 패턴과 일치할 것으로 예상하지 않았기 때문에 결과가 혼란스럽습니다 .

대문자에만 일치하는 glob 패턴을 어떻게 작성할 수 있나요?

답변1

그 이유는 glob 패턴이 [A-Z]일반적으로 대문자와 일치하지 않기 때문입니다. 구체적으로 다음과 같이 확장됩니다.

현재 로케일의 조합 순서 및 문자 세트

대문자로 시작하는 파일을 원하면 다음을 사용할 수 있습니다.

echo [[:upper:]]*

또는 로케일을 명시적으로 설정하세요.

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

또는 bash globasciiranges쉘 옵션을 사용하십시오

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

Pattern matching섹션을 참조하세요 .man bash

관련 정보