`ls -d *[!e]*`가 e를 포함하는 모든 파일을 생략하는 대신 모든 파일을 표시하는 이유는 무엇입니까?

`ls -d *[!e]*`가 e를 포함하는 모든 파일을 생략하는 대신 모든 파일을 표시하는 이유는 무엇입니까?

ls -d *e*"e"가 포함된 모든 파일을 인쇄합니다. 그러나 오히려 ls -d *[!e]*작동하지 않는 것 같습니다. 왜?

자체 매개변수로 받아서 모든 파일을 확장해서 ls그런 걸까요 ?*

나는 이것을 할 수 있다는 것을 알고 있습니다: ( ls -d !(*e*)Bash 또는 ksh에서 set 사용 extglob)

답변1

이 glob이 실제로 수행하는 작업은 임의 개수의 문자와 일치하고 e가 아닌 단일 문자와 임의 개수의 문자와 일치하는 것입니다. 이름이 e로만 구성되지 않은 모든 파일과 일치합니다.

관련 정보