Làm thế nào để xóa một thư mục không trống trong Terminal?


630

Làm cách nào để xóa thư mục sau?

Tôi gõ:

rmdir lampp

Lỗi này xuất hiện:

rmdir: failed to remove `lampp': Directory not empty

Có một lệnh để xóa tất cả các tập tin trong thư mục và xóa thư mục thư mục?


1
Tôi không thể xóa thư mục như "Thư mục mới" bằng tất cả các lệnh chi tiết ở trên. Đó là từ kép. Nhưng tôi muốn xóa thư mục đó. Bất kỳ đề xuất sẽ được hoan nghênh. T.Divakara, Bengaluru, Ấn Độ

Đó là khoảng trống trong tên tệp, hãy thử sử dụng 'ngoặc kép'> rmdir 'Thư mục mới' <sau đó xóa thư mục hoặc sử dụng các ký tự thoát cho các ký tự không thể đọc được.
Ken Mollerup

2
Chỉ cần làm rm -r lamppsẽ làm.
John Strood

Câu trả lời:


877

Sử dụng lệnh dưới đây:

rm -rf lampp

Nó xóa tất cả các tập tin và thư mục có trong lamppthư mục.

Trong trường hợp người dùng không có quyền xóa thư mục:

Thêm sudovào đầu lệnh:

sudo rm -rf folderName

Nếu không, không có sudobạn sẽ được trả lại quyền từ chối. Và đó là một thực hành tốt để cố gắng không sử dụng -ftrong khi xóa một thư mục:

sudo rm -r folderName

Lưu ý: điều này giả sử bạn đã ở cùng cấp độ của thư mục bạn muốn xóa trong terminal, nếu không:

sudo rm -r /path/to/folderName

FYI: bạn có thể sử dụng chữ -f, -r, -v:

  • -f = để bỏ qua các tệp không tồn tại, không bao giờ nhắc
  • -r = để xóa thư mục và nội dung của chúng theo cách đệ quy
  • -v = để giải thích những gì đang được thực hiện

69
Theo ý kiến ​​khiêm tốn của tôi, đó là một thực hành tốt không bao giờ thêm "f" vào lần thử đầu tiên. Mục đích của nó là bỏ qua một số lời nhắc cảnh báo có thể quan trọng, đặc biệt nếu bạn vô tình thực hiện nó trên / từ thư mục sai. Theo tôi, tốt nhất là bạn nên thử mà không có "f" trước, sau đó chỉ khi bạn gặp phải nhiều lời nhắc cảnh báo và bạn chắc chắn bỏ qua tất cả, hãy tắt Ctrl và C và lặp lại lệnh với " đụ".
thomasrutter

@BKSpurgeon không trừ khi bạn vô tình gõ --no-preserve-rootquá .
muru

@thomasrutter ... Đồng ý. Chủ sở hữu tệp "xxx": root và nhóm: root có thể bị xóa bằng khóa -f ; và không có sudo . Đây là thông báo không có -f : " rm: xóa tệp thông thường được bảo vệ ghi '/home/william/.cache/netbeans/v08.01/tmp/xxx'? _". _ Đọc nhẹ nhàng.
sẽ

95
rm -R lampp

Tuy nhiên, bạn cần cẩn thận với một lệnh đệ quy như thế này, vì nó dễ dàng vô tình xóa nhiều hơn bạn dự định.

Đó là một ý tưởng tốt để luôn kiểm tra kỹ thư mục bạn đang ở và xem bạn đã gõ lệnh đúng chưa, trước khi nhấn Enter.

Phiên bản an toàn hơn

rm -R -i lampp

Thêm -ilàm cho nó an toàn hơn một chút, bởi vì nó sẽ nhắc bạn về mọi thao tác xóa. Tuy nhiên, nếu bạn đang xóa nhiều tập tin thì điều này sẽ không thực tế lắm. Tuy nhiên, bạn có thể thử điều này đầu tiên.

Lưu ý về -f tùy chọn:

Nhiều người đề nghị sử dụng -f(kết hợp nó thành -Rfhoặc -rf), cho rằng nó sẽ thoát khỏi các gợi ý gây phiền nhiễu. Tuy nhiên, trong trường hợp bình thường bạn không cần đến nó, và sử dụng nó ngăn chặn một số vấn đề mà bạn có thể làm muốn biết về. Khi bạn sử dụng nó, bạn sẽ không được cảnh báo nếu các đối số của bạn cung cấp một thư mục hoặc tệp không tồn tại: rm sẽ chỉ âm thầm không xóa bất cứ điều gì. Theo nguyên tắc chung, hãy thử trước mà không có -f: nếu có vấn đề với các đối số của bạn, thì bạn sẽ nhận thấy. Nếu bạn bắt đầu nhận được quá nhiều lời nhắc về các tệp mà không có quyền ghi, thì bạn có thể thử với-f. Hoặc, chạy lệnh từ người dùng (hoặc siêu người dùng bằng sudo) có toàn quyền đối với các tệp và thư mục bạn đang xóa để ngăn những lời nhắc này ở vị trí đầu tiên.


4
Lưu ý: chữ thường -rcũng có thể được sử dụng và có tác dụng tương tự ở đây. Tôi chỉ có xu hướng sử dụng chữ hoa -Rvì nó phù hợp với các lệnh khác mà tôi sử dụng như grep, và chmodmột số trong đó chỉ hỗ trợ dạng chữ hoa.
thomasrutter

Cái này hoạt động với tôi bằng cách sử dụng adb (cầu gỡ lỗi android) trên Android. Đã thử rm -rf nhưng không được. Phải dùng rm -R. Cảm ơn.
raddevus

Đây là một giải pháp tốt, đặc biệt nếu thiếu kinh nghiệm sử dụng thiết bị đầu cuối Bash. Lệnh có thể được rút ngắn thành rm -ir FOLDER.
AlainD

24

Có rất nhiều cách để xóa một thư mục thông qua chế độ CLI. Nó phụ thuộc vào cách bạn cảm thấy thoải mái.

rm -rvf /path/to/directory  
  • -r = xóa thư mục và nội dung của chúng theo cách đệ quy
  • -v = giải thích những gì đang được thực hiện
  • -f = bỏ qua các tệp không tồn tại, không bao giờ nhắc

Nếu bạn là người mới trong Linux, hãy sử dụng các trang lệnh của lệnh ( man rm) để có thêm tùy chọn và độ chính xác cao hơn.


-2

Tôi đã gặp một số rắc rối với điều đó ngày hôm nay, nhưng tôi đã vượt qua nó bằng sudo.

Hãy cẩn thận: Hãy chắc chắn rằng bạn muốn xóa toàn bộ trước khi sử dụng lệnh dưới đây.

$ sudo rm -R [Directory name]

Tôi đã thực hiện thành công việc này ngày hôm nay và xóa nhiều thư mục không trống mà tôi xác nhận là tôi không muốn / cần.

Tôi đang sử dụng 14.04 LTS


4
"SUDO" không phải là một lệnh - "sudo" là. Tuy nhiên, bạn không sử dụng sudo để xóa một thư mục không trống, bạn sử dụng nó để xóa một tệp không thuộc sở hữu của bạn. Làm điều này như một vấn đề tất nhiên là nguy hiểm và không thông minh lắm, vì bạn không nên mù quáng xóa các tệp bạn không sở hữu.
Marty Fried

-3

Bằng cách này, cá nhân tôi muốn xóa một thư mục chứa tệp / s được bảo vệ ghi (thư mục .git và thư mục con) và cuối cùng nhận ra tôi cũng cần phải trở thành một siêu người dùng để xóa thành công các tệp này. Đây là những gì tôi đã làm:

#became super user
sudo su -

#deleted contents of, and then the directory, harvey_snake/
rm -R harvey_snake/

4
Tôi không nghĩ bạn cần sudo suở đây. Chỉ cần tiền tố rmlệnh với sudo. Để bảo mật, đó là một thực hành tốt (theo những người đề xuất sudo) không nên ở trong một dấu nhắc gốc khi không cần thiết.
thomasrutter

2
Ngoài ra, hãy rất rất chắc chắn rằng bạn đang ở trong thư mục nào sudo rm -r.
Tony Martin

Bạn có thể tạo lệnh gốc-Relative ( /directory_name) để không còn nghi ngờ gì về việc bạn đang xóa thư mục nào.
Yaakov Ainspan
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.