Em bash , se a opção extendedglob estiver definida (por padrão), você pode negar um padrão glob colocando-o entre parênteses e prefixando um estrondo ( ! ). Por exemplo, !(*.gz) corresponde a todos os itens cujos nomes não terminam com .gz . Veja a subseção Pathname Expansion na seção EXPANSION na página de manual bash para mais informações.
Em zsh , se a opção extglob estiver definida (é não , por padrão), você pode negar um padrão glob inserindo um sinal de intercalação ( ^ ). Por exemplo, ^*.gz corresponde a todos os itens cujos nomes não terminam com .gz . Veja a seção FILENAME GENERATION na página de manual zshexpn para mais informações.
Observe que, em geral, se você quiser usar ls com um padrão glob, deverá especificar -d . Isso ocorre porque o shell expande o padrão glob em uma lista de nomes correspondentes, passando cada um deles para ls como um argumento separado. Se você não usar -d , ls listará os conteúdos de quaisquer diretórios cujos nomes são fornecidos.