ls * | grep -v dont_delete_this_file | xargs rm -rf
Exemplo:
mkdir test && cd test
touch test1
touch test2
touch test3
touch test4
touch test5
Para remover todos os arquivos, exceto 'test2':
ls * | grep -v test2 | xargs rm -rf
Então a saída 'ls' é:
test2
EDITAR:
Obrigado pelo comentário. Se o diretório contiver alguns arquivos com espaços:
mkdir test && cd test
touch "test 1"
touch "test 2"
touch "test 3"
touch "test 4"
touch "test 5"
Você pode usar (com o bash):
rm !("test 1"|"test 4")
Saída 'ls':
test 1
test 4