Se você quiser usar globbing (nem sempre é uma boa ideia), você pode usar:
$ ls -d !(*[qQ]*)
ou com shopt -s nocaseglob :
$ shopt -s nocaseglob
$ ls -d !(*q*)
A opção -d para não listar o conteúdo dos diretórios correspondentes.
Para que isso funcione, você deve ter extglob set, provavelmente é o caso por padrão. Se não, shopt -s extglob fará.
Uma abordagem melhor seria usar find , pois você poderá -exec algumas coisas nos arquivos correspondentes se precisar (renomear, grep , editar, etc ...), e você terá um controle muito melhor sobre o que você precisa combinar. Um exemplo:
$ find . -maxdepth 1 \! -iname '*q*' -type f
Isto irá encontrar todos os arquivos ( -type f ) no diretório atual ( . ) não em subdiretórios ( -maxdepth 1 ) que não ( \! ) tem um q ou um Q em seu nome ( -iname '*q*' ).
Se você tem um grande número de arquivos, encontrar é melhor e mais rápido do que o Bash , e não transbordará o número máximo de argumentos.
Espero que isso ajude!