Hapus semua file kecuali satu dengan rm

10

Apakah ada cara untuk menghapus semua file dalam direktori kecuali untuk satu dengan nama file tertentu? Misalnya, jika saya memiliki sebuah direktori yang berisi file-file file1, file2dan dontdelete. Apakah akan ada cara untuk menghapus dengan cepat file1, dan file2dan tidak dontdelete? Saya tahu bahwa saya hanya bisa melakukan rm file1 file2tetapi itu tidak akan berhasil untuk banyak file. Juga, saya menggunakan Mac OS X jika itu membuat perbedaan.

Wuffers
sumber
Wildcarding sederhana mungkin solusi Anda: file rm * akan menghapus file1 dan file2 tetapi tidak dihapus. Jika kebutuhan Anda lebih kompleks, tergantung pada bahasa scripting shell, Anda bisa membuat daftar file yang ingin Anda hapus menggunakan ekspresi reguler dan pipa ini ke perintah rm.
therobyouknow
@ Rob: Ya, situasiku lebih kompleks dari itu. Dan jawaban Ignacio berhasil. Terimakasih Meskipun!
Wuffers

Jawaban:

16

Dalam bash:

shopt -s extglob
rm !(dontdelete)
Ignacio Vazquez-Abrams
sumber
1
+1 Wow solusi yang sangat ringkas. Akan mengingatnya jika saya membutuhkannya.
therobyouknow
dapatkah ini diperluas untuk menyertakan banyak direktori yang tidak ingin Anda hapus
mcgrailm