bash - xóa tất cả các thư mục (và nội dung) nhưng không xóa các tệp trong pwd


19

Tôi muốn xóa tất cả các thư mục khỏi pwd nhưng để các tệp trong pwd một mình. Nếu nội dung của pwd của tôi là:

mydir1
mydir2
myfile1
myfile2

sau đó tôi muốn chỉ còn lại

myfile1
myfile2

Tôi giả sử rằng tôi cần sử dụng rm -r -i

Tôi có đúng không?

Câu trả lời:


10

Không, điều đó sẽ cung cấp cho bạn "toán hạng bị thiếu" vì bạn không chỉ định bất cứ điều gì. Đặt một *dấu nhắc cũng sẽ cho các tập tin.

Tôi sẽ thử:

find -mindepth 1 -maxdepth 1 -type d -exec rm -r {} \;

Các mindepth 1sẽ loại trừ .từ kết quả này, maxdepth 1sẽ loại trừ cố gắng làm theo các thư mục đó anyway sẽ được xóa (do đó tạo ra một cảnh báo). Nhưng trong thực tế, bạn có thể loại bỏ cả hai nếu bạn đồng ý có một vài cảnh báo "vô tội".


21

Tôi tìm thấy cái này ở đâu đó:

rm -r */

Có vẻ là cách dễ nhất để đi. Với ví dụ của bạn, bạn sẽ phải xác nhận từng trường hợp, nếu bạn có 5 tệp thì không sao, nhưng với cấu trúc tệp lớn hơn, chế độ tương tác không phải là cách để ... Chỉ là một gợi ý, nếu đó là thông tin quan trọng, hãy tạo một sao lưu...


1
Điều đó cũng sẽ theo các liên kết tượng trưng, ​​mà rất có thể không mong muốn ở đây.
JdeBP

8

Sử dụng

rm -rf ./*/

Điều đó tránh chế độ tương tác, chỉ xóa các thư mục trong thư mục cục bộ của bạn.


Như JdeBP chỉ ra trên câu trả lời rất giống Martin , nếu hiện tại (top-level) thư mục chứa các liên kết tượng trưng cho các thư mục khác, họ cũng sẽ bị xóa (ngay cả khi họ đang không ở trong hoặc cấp dưới vào thư mục hiện hành).
Scott

3

Một cái gì đó như thế này sẽ hoạt động:

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

-type d chỉ tìm thư mục


-1
you can also try in this way to delete only all folders not files from any location in linux.

    #delete only all dir and don't touch files
    #!/bin/bash
    for dir in `ls -l | grep ^d | awk '{print $9}'`
    do
    echo "going to delete $dir " `rm -rf $dir`
    done
    ls
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.