2011-05-10 29 views
29

Tôi có hàng trăm thư mục và tệp trong một thư mục.Làm thế nào để chỉ xóa các thư mục và để lại các tệp bị ảnh hưởng

cách tốt nhất xóa chỉ mục (không có vấn đề nếu các thư mục có bất cứ điều gì ở trong đó hay không, chỉ cần xóa tất cả chúng)

Hiện nay tôi sử dụng ls -1 -d */, và ghi chúng vào một tập tin, và làm sed là gì, và sau đó chạy nó. Nó khá dài. Tôi đang tìm cách tốt hơn xóa chỉ mục

Trả lời

-13

Trong một dòng:

rm -R `ls -1 -d */` 

(backquotes)

+5

Đừng đặt đầu ra khỏi 'ls'; ** đặc biệt là ** không phải là 'rm -r'. Nó không thành công khi tên đường dẫn chứa dấu cách. –

+1

Không xem xét vấn đề về không gian. Sẽ nhớ điều đó. –

+0

Điều này không được chấp nhận là câu trả lời hay nhất – Asim

10

Đầu tiên, hãy chạy:

find /path -d -type d 

để đảm bảo đầu ra trông lành mạnh, sau đó:

find /path -d -type d -exec rm -rf '{}' \; 

-type d trông chỉ dành cho các thư mục, sau đó -d đảm bảo đặt thư mục con trước cha mẹ.

+0

Lệnh đầu tiên thậm chí không hoạt động đối với tôi. > tìm. -d -type -d tìm: cảnh báo: tùy chọn -d không được chấp nhận; xin vui lòng sử dụng -depth thay vào đó, bởi vì sau này là một tính năng tuân thủ POSIX. tìm: đối số không hợp lệ -d thành -type – Anthony

+1

@Anthony bạn có thêm dấu gạch nối trong đó. Nó phải là 'find/path -d -type d' – csvan

+1

@csvan lol. wow chỉ là wow. – Anthony

111

Đây là đơn giản hơn nhiều và làm việc cho tôi:

rm -r */ 
+4

để bỏ qua câu hỏi y/n: rm -rf */ –

+1

Hãy nhớ mở rộng khi sử dụng điều này trong tập lệnh, vì dấu hoa thị sẽ không mở rộng trong dấu ngoặc kép. Như vậy, nó sẽ hoạt động tốt. http://unix.stackexchange.com/questions/156534/bash-script-error-with-strings-with-paths-that-have-spaces-and-wildcards –

12

find . -maxdepth 1 -mindepth 1 -type d

sau đó

find . -maxdepth 1 -mindepth 1 -type d -exec rm -rf '{}' \;

+1

Mặc dù mã này có thể trả lời câu hỏi, cung cấp ngữ cảnh bổ sung liên quan đến _why_ và/hoặc _how_ nó trả lời câu hỏi sẽ cải thiện đáng kể giá trị dài hạn của nó. Xin vui lòng [sửa] câu trả lời của bạn để thêm một số lời giải thích. –

Các vấn đề liên quan