Xóa tất cả các tệp nhưng một tệp có rm


9

Có cách nào để loại bỏ tất cả các tập tin trong một thư mục ngoại trừ cho một với một tên tập tin nhất định? Ví dụ, nếu tôi có một thư mục chứa các tệp file1, file2dontdelete. Có cách nào để nhanh chóng xóa file1file2 và không dontdelete? Tôi biết rằng tôi có thể làm rm file1 file2 nhưng điều đó sẽ không làm việc cho một loạt các tập tin. Ngoài ra, tôi đang dùng Mac OS X nếu điều đó tạo ra sự khác biệt.


Ký tự đại diện đơn giản có thể là giải pháp của bạn: tệp rm * sẽ xóa tệp1 và tệp2 nhưng không xóa. Nếu nhu cầu của bạn phức tạp hơn, tùy thuộc vào ngôn ngữ kịch bản lệnh shell, bạn có thể tạo danh sách các tệp bạn muốn xóa bằng biểu thức chính quy và chuyển lệnh này sang lệnh rm.
therobyouknow

@Rob: Vâng, tình hình của tôi phức tạp hơn thế. Và câu trả lời của Ignacio đã có hiệu quả. Cảm ơn, mặc dù!
Wuffers

Câu trả lời:


15

Trong bash:

shopt -s extglob
rm !(dontdelete)

Tuyệt vời! Điều đó đã làm việc hoàn hảo! Cảm ơn!
Wuffers

1
+1 giải pháp rất ngắn gọn. Sẽ ghi nhớ điều đó nếu tôi cần.
therobyouknow

điều này có thể được mở rộng để bao gồm nhiều thư mục mà bạn không muốn xóa
mcgrailm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.