Cách xóa tệp và thư mục nhanh chóng qua thiết bị đầu cuối (bash shell) [đã đóng]


331

Từ cửa sổ đầu cuối:

Khi tôi sử dụng rmlệnh, nó chỉ có thể loại bỏ các tập tin.
Khi tôi sử dụng rmdirlệnh, nó chỉ loại bỏ các thư mục trống.

Nếu tôi có một thư mục được lồng với các tệp và thư mục trong các thư mục chứa các tệp, v.v., có cách nào để xóa tất cả các tệp và thư mục mà không cần gõ lệnh vất vả không?

Nếu nó làm cho một sự khác biệt, tôi đang sử dụng mac bash shell từ terminal, không phải Microsoft DOS hay linux.


Chỉ trong trường hợp bạn muốn khôi phục các tệp trong tương lai, không sử dụng "rm" cho các trường hợp đó. Sử dụng "rm-thùng rác": github.com/nateshmbhat/rm-trash
Natesh bhat

Câu trả lời:


759
rm -rf some_dir

-r "đệ quy" -f "lực lượng" (chặn tin nhắn xác nhận)

Hãy cẩn thận!


26
+1 và rất vui khi bạn thêm "Hãy cẩn thận!" một phần ... chắc chắn là một lệnh "Sawzall" có thể nhanh chóng biến một ngày tốt lành thành một ngày tồi tệ .. nếu sử dụng một cách bất cẩn.
itmatt

5
như không làm "# rm -rf /" bạn sẽ hối tiếc rằng:
DarthVader

1
@itsmatt: Bạn biết những gì họ nói ... đưa cho ai đó một Sawzall, và đột nhiên mọi vấn đề trông giống như hàng giờ vui vẻ!
Jim Lewis

164
Trên máy Mac? Thay vào brew install trashđó, hãy làm điều này: sau đó trash -rf some_dirĐiều này sẽ chuyển thư mục không mong muốn vào thùng rác của bạn thay vì chỉ biến kiểu chữ Uy tín thành ether. ( nguồn )
zakdances

4
Cách tiếp cận "rác" là tuyệt vời!
anopres 17/03 '

59
rm -rf *

Sẽ loại bỏ mọi thứ (thư mục & tập tin) trong thư mục hiện tại.

Nhưng hãy cẩn thận! Chỉ thực hiện lệnh này nếu bạn hoàn toàn chắc chắn, rằng bạn đang ở đúng thư mục.


17
rm -rf là ​​lệnh rất rủi ro, bạn phải luôn cẩn thận và chỉ định thư mục sẽ bị xóa.
eomeroff

8
Làm thế nào về việc chạy ls -R *đầu tiên để xem những gì sẽ bị xóa bởirm -rf *
Hammad Khan

Điều này làm việc tốt cho tôi, cảm ơn.
Monica Hzigner

14

Có, có. Các -rtùy chọn nói rmr ecursive, và loại bỏ toàn bộ hệ thống phân cấp tập tin gốc là đối số của nó; nói cách khác, nếu được cung cấp một thư mục, nó sẽ xóa tất cả nội dung của nó và sau đó thực hiện những gì có hiệu quả rmdir.

Hai tùy chọn khác bạn nên biết là -i-f. -ilà viết tắt của i nteractive; nó rmnhắc bạn trước khi xóa từng tập tin. -flà viết tắt của f orce; nó đi trước và xóa mọi thứ mà không cần hỏi. -ian toàn hơn, nhưng -fnhanh hơn; chỉ sử dụng nó nếu bạn hoàn toàn chắc chắn rằng bạn đang xóa điều đúng. Bạn có thể chỉ định những cái này có -rhoặc không; đó là một thiết lập độc lập.

Và như thường lệ, bạn có thể kết hợp các công tắc: rm -r -ichỉ rm -ri, và rm -r -frm -rf.

Cũng lưu ý rằng những gì bạn đang học áp dụng cho bashmọi hệ điều hành Unix: OS X, Linux, FreeBSD, v.v. Trên thực tế, rmcú pháp của nó giống nhau ở hầu hết mọi hệ vỏ trên mọi hệ điều hành Unix. OS X, dưới mui xe, thực sự là một hệ thống BSD Unix.


1
Mặc dù tất cả các tùy chọn được đề cập ở trên là tiêu chuẩn trong số tất cả các hương vị Unix được liệt kê, cũng có một số khác biệt. Ví dụ, OS X (nhưng không phải Linux) có "rm -d", loại bỏ các tệp hoặc thư mục trống. Tuy nhiên, +1 cho điểm OS X là BSD bên trong.
David Gelhar

Đúng --- tập hợp POSIX (khá nhiều) được đảm bảo hoạt động ổn định trên Unixen, nhưng mọi thứ bên ngoài có thể có hoặc không.
Antal Spector-Zabusky

2

Vì vậy, tôi đã tìm mọi cách để loại bỏ tất cả các tệp trong một thư mục ngoại trừ một số thư mục và các tệp, tôi muốn giữ xung quanh. Sau khi tìm kiếm nhiều, tôi đã nghĩ ra một cách để làm điều đó bằng cách sử dụng find.

find -E . -regex './(dir1|dir2|dir3)' -and -type d -prune -o -print -exec rm -rf {} \;

Về cơ bản, nó sử dụng regex để chọn các thư mục để loại trừ khỏi kết quả sau đó loại bỏ các tệp còn lại. Chỉ muốn đưa nó ra đây trong trường hợp người khác cần nó.

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.