为什么这个 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
匹配它自己。
我在 Bash 中读到这个
$ ls !(*-renamed).jpg
IMG_1234.jpg
但是这个没有:
$ ls *!(-renamed).jpg
IMG_1234.jpg IMG_1236-renamed.jpg
难道是因为*
太贪心了?或者它在括号内的行为是否不同?我在 Bash 手册中找不到解释。
因为 *
匹配 IMG_1236-renamed
,!(-renamed)
匹配一个空字符串,而 .jpg
匹配它自己。