Simplesmente use o forloop do Bash e testpara filtrar os diretórios desejados e o rm -rfcomando para excluir diretórios recursivamente, desta forma:
for x in /path/to/parent/*; do test "$x" != "dir_survive" && rm -rf "$x"; done
Isso itera sobre todos os elementos (arquivos e diretórios) dentro /path/to/parent/e exclui o elemento recursivamente se seu nome não for igual a dir_survive. Se o diretório pai for o diretório atual, você poderá escrever apenas *como caminho.
Se você não tiver certeza e quiser testar quais elementos serão excluídos primeiro sem executar nenhuma ação, basta substituir rm -rfo comando acima por echoe ele produzirá apenas os candidatos a exclusão.
Aqui está um exemplo de execução:
$ tree
.
├── dir1
│ ├── subdir1
│ │ ├── file1
│ │ └── file2
│ └── subdir2
│ ├── file1
│ └── file2
├── dir2
│ ├── subdir1
│ │ ├── file1
│ │ └── file2
│ └── subdir2
│ ├── file1
│ └── file2
└── dir_survive
├── subdir1
│ ├── file1
│ └── file2
└── subdir2
├── file1
└── file2
9 directories, 12 files
$ for x in *; do test "$x" != "dir_survive" && rm -rf "$x"; done
$ tree
.
└── dir_survive
├── subdir1
│ ├── file1
│ └── file2
└── subdir2
├── file1
└── file2
3 directories, 4 files