Cách xóa nội dung của một thư mục trong Centos


9

Tôi cần xóa tất cả nội dung của một thư mục trong CentOS nhưng không xóa chính thư mục đó.

Ví dụ: Tôi có một thư mục có tên "MYFOLDER" chứa các thư mục con FOLD_1, FOLD_2, FOLD_3, FOLD_4 ... vv và một số tệp. Tôi cần xóa tất cả các thư mục và tập tin này nhưng không xóa thư mục container MYFOLDER. Tôi cần thư mục này để chỉ đạo các kết quả của một quá trình trước đó.

Tôi đã thử với rm -rf lệnh, nhưng điều này cũng xóa thư mục container.

Câu trả lời:


11

Xóa nội dung của thư mục thay thế.

rm -r MYFOLDER/*

1
Lưu ý rằng điều này không ẩn các tệp / thư mục trong MYFOLDER
tylerl

1
@tylerl: Nó làm nếu bạn đặt shopt -s dotglobđầu tiên.
jgoldschrafe

Điều này đòi hỏi bạn phải phê duyệt thủ công y / n giảm dần vào từng thư mục con, đây là một sự lãng phí hoàn toàn thời gian. Lệnh đúng sẽ tự động xử lý tất cả các lệnh đó để bạn không bị kẹt với 50 lời nhắc.
CodeMed

rm -R /path/to/myfolder/*là cú pháp chính xác để tránh các yêu cầu quá mức để phê duyệt xóa mọi tệp và thư mục con. Lưu ý về vốn R.
CodeMed

5

Bạn có thể dùng:

rm -r MYFOLDER/{.[^.],.??*}

Điều này cũng xóa các tập tin và thư mục ẩn. Nếu bạn có quá nhiều tệp trong thư mục MYFOLDER, thì bạn nên chạy thay thế:

ls MYFOLDER/{.[^.],.??*}|xargs rm -r

Tôi có hơn 500k tệp trong meta/thư mục của mình , vì vậy tôi muốn thử thay thế xargs, tuy nhiên tôi nhận được các thông báo lỗi này: ls: cannot access meta/.[^.]: No such file or directory ls: cannot access meta/.??*: No such file or directory rm: missing operand
Andres SK

1
Hãy chắc chắn rằng bạn đang sử dụng bashshell. Shell phải hỗ trợ "Mở rộng cú đúp" và "Biểu thức chính quy" cho các mẫu tệp.
Mircea Vutcovici

3

Theo tôi, cách dễ nhất là xóa toàn bộ thư mục, kể cả chính nó, rồi tạo lại thư mục. Có những tình huống khi đây không phải là một giải pháp tốt (chẳng hạn như các tập lệnh không được giám sát hoặc các đường ống phức tạp hơn), nhưng bạn không chỉ định lý do tại sao bạn không muốn xóa thư mục.

rm -rf foldername
mkdir foldername

Giáo sư. Bạn đã chỉ định (tôi đọc lại bài viết của bạn). Vâng, vẫn còn, xóa và tái tạo có thể làm việc. Đặc biệt là nếu bạn xâu chuỗi các lệnh lại với nhau, như

rm -rf foldername && mkdir foldername

Hoặc là

rm -rf foldername; mkdir foldername

Đôi khi bạn không có quyền trong thư mục mẹ hoặc bạn muốn giữ các thuộc tính nhất định mà bạn không biết. Ví dụ: bạn không thể xóa thư mục nhà của mình với tư cách là người dùng không root, nhưng bạn có thể xóa bất cứ thứ gì trong đó.
Mircea Vutcovici

Đây phải là câu trả lời được chấp nhận. +1
CodeMed

0

Làm thế nào về

cd MYFOLDER
find . | rm -rf

Điều này cũng xóa các tập tin ẩn (những người bắt đầu bằng một dấu chấm), quá.


1
Điều này cũng sẽ xóa MYFOLDER.
Mircea Vutcovici


0

Tôi thực sự khuyên bạn nên thay thế này (nó cũng loại bỏ các tệp có khoảng trắng trong tên):

find MYFOLDER/ -type f -print0 | xargs -0 rm -f
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.