Você pode usar find
com uma negação (por sua conta e risco).
encontre todos os arquivos e pastas chamados "a" ou "b":
find -name a -o -name b
encontre todos os arquivos e pastas com o nome "a" ou "b" no diretório atual "
find -maxdepth 1 -name a -o -name b
encontre todos os arquivos e pastas não nomeados "a" e não nomeados "b" no diretório atual:
find -maxdepth 1 ! -name a ! -name b
também exclui o diretório atual do resultado
find -maxdepth 1 ! -name a ! -name b ! -name .
agora você pode usar rm
para excluir todos os elementos fundados:
find -maxdepth 1 ! -name a ! -name b ! -name . -exec rm -rv {} \;