Você precisa ativar extglob .
Suponha que tenhamos três diretórios:
$ ls -d */
current/ future/ past/
Sem glob estendido, o seguinte não é entendido:
$ echo !(current)
bash: syntax error near unexpected token '('
Se habilitarmos extglob , entendido:
$ shopt -s extglob
$ echo !(current)
future past
Isso corresponde com sucesso a todos os arquivos exceto current .
Observe que o ponto de exclamação, ! , é um caractere bash-ativo. Pode invocar a expansão de histórico que, se falhar, resulta no erro que você observou. Se você não estiver usando a expansão de histórico, convém desativá-lo: set +H .