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.


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)

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.