Does anybody know how to use ?(pattern)? Or @(pattern)? Or any of them except !(pattern)? If you do an internet search, the man page is always blithely quoted, but only !(pattern) is ever demostrated... I wonder if the others even work?
?(pattern-list) Matches zero or one occurrence of the given patterns *(pattern-list) Matches zero or more occurrences of the given patterns +(pattern-list) Matches one or more occurrences of the given patterns @(pattern-list) Matches one of the given patterns !(pattern-list) Matches anything except one of the given patterns $ ls -d ?(*clean*|vim) ciho-clean clean vim (not that I can think of an application - purely academic)