![`ls -d *[!e]*`가 e를 포함하는 모든 파일을 생략하는 대신 모든 파일을 표시하는 이유는 무엇입니까?](https://linux55.com/image/106772/%60ls%20-d%20*%5B!e%5D*%60%EA%B0%80%20e%EB%A5%BC%20%ED%8F%AC%ED%95%A8%ED%95%98%EB%8A%94%20%EB%AA%A8%EB%93%A0%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%83%9D%EB%9E%B5%ED%95%98%EB%8A%94%20%EB%8C%80%EC%8B%A0%20%EB%AA%A8%EB%93%A0%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%ED%91%9C%EC%8B%9C%ED%95%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
ls -d *e*
"e"가 포함된 모든 파일을 인쇄합니다. 그러나 오히려 ls -d *[!e]*
작동하지 않는 것 같습니다. 왜?
자체 매개변수로 받아서 모든 파일을 확장해서 ls
그런 걸까요 ?*
나는 이것을 할 수 있다는 것을 알고 있습니다: ( ls -d !(*e*)
Bash 또는 ksh에서 set 사용 extglob
)
답변1
이 glob이 실제로 수행하는 작업은 임의 개수의 문자와 일치하고 e가 아닌 단일 문자와 임의 개수의 문자와 일치하는 것입니다. 이름이 e로만 구성되지 않은 모든 파일과 일치합니다.