Existe uma opção dotglob
no bash exatamente para essa finalidade:
$ touch file1 file2 .file
$ ls !(file1)
file2
$ shopt -s dotglob
$ ls !(file1)
.file file2
No meu script de implantação, tenho um código para excluir determinados arquivos.
shopt -s extglob
mv !(deploy.sh|file1|file2) ~/$public
Funciona quase bem, mas ignora arquivos ocultos para que não sejam movidos. Como melhorar o código para mover arquivos ocultos também?