Cukup gunakan Bash's forloop dan testuntuk menyaring direktori yang diinginkan dan rm -rfperintah untuk menghapus direktori secara rekursif, seperti ini:
for x in /path/to/parent/*; do test "$x" != "dir_survive" && rm -rf "$x"; done
Ini mengulangi semua elemen (file dan direktori) di dalam /path/to/parent/dan menghapus elemen secara rekursif jika namanya tidak sama dengan dir_survive. Jika direktori induk adalah direktori saat ini, Anda hanya boleh menulis *sebagai path.
Jika Anda tidak yakin dan ingin menguji elemen mana yang akan dihapus terlebih dahulu tanpa mengambil tindakan apa pun, cukup ganti rm -rfdengan perintah di atas dengan echodan itu hanya akan menampilkan kandidat yang dihapus.
Berikut ini contoh yang dijalankan:
$ 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