为什么这个 Bash 通配模式不起作用?

Why doesn't this Bash globbing pattern work?

我在 Bash 中读到这个 ​​ 我想知道为什么这个 glob 模式有效:

$ ls !(*-renamed).jpg
IMG_1234.jpg

但是这个没有:

$ ls *!(-renamed).jpg
IMG_1234.jpg         IMG_1236-renamed.jpg

难道是因为*太贪心了?或者它在括号内的行为是否不同?我在 Bash 手册中找不到解释。

因为 * 匹配 IMG_1236-renamed!(-renamed) 匹配一个空字符串,而 .jpg 匹配它自己。