Tôi muốn xóa mọi tập tin, nhưng giữ cấu trúc thư mục. Là có một cách?
LƯU Ý: (Tôi đang sử dụng GNU bash 4.1.5).
Tôi muốn xóa mọi tập tin, nhưng giữ cấu trúc thư mục. Là có một cách?
LƯU Ý: (Tôi đang sử dụng GNU bash 4.1.5).
Câu trả lời:
Thử đi:
find . ! -type d -exec rm '{}' \;
Điều này sẽ xóa mọi tập tin duy nhất, ngoại trừ các thư mục, bên dưới thư mục làm việc hiện tại. Hãy cực kỳ cẩn thận với lệnh này.
Nếu phiên bản find
trên máy của bạn hỗ trợ, bạn cũng có thể sử dụng
find . ! -type d -delete
find
lệnh không bao giờ nhìn thấy dấu ngoặc kép. Nó chỉ xem {}
điểm đánh dấu là một đối số.
-exec command {} +
" & this " -exec command ;
". Tôi đã sử dụng \;
trong quá khứ không bao giờ là '{}'.
Bạn có thể sử dụng lệnh find
để định vị mọi tệp nhưng duy trì cấu trúc thư mục:
$ find /some/dir -type f -exec rm {} +
Theo câu hỏi và câu hỏi về Unix & Linux này có tiêu đề: gnu tìm và che dấu {} cho một số shell - cái nào? , thoát khỏi {}
dấu tích đơn ( '
) dường như không còn cần thiết nữa với các shell hiện đại như Bash.
Cách dễ dàng để xóa mọi tệp thông thường trong thư mục hiện tại và thư mục con theo cách đệ quy:
zsh -c 'rm **/*(.)'
Chỉ zsh có vòng loại toàn cầu để khớp các tệp theo loại. Tuy nhiên, rm
lệnh không hoạt động trên các thư mục, vì vậy trong bash, bạn có thể sử dụng
shopt -s globstar
rm **/*
Điều này không làm việc cho các lệnh khác hơn rm
mặc dù. Nói chung, bạn có thể sử dụng find
:
find . -type f -delete
hoặc nếu bạn find
không hỗ trợ -delete
:
find . -type f -exec rm {} +
Tôi có yêu cầu tương tự để xóa các tệp khỏi một đường dẫn và các thư mục con của nó (lọc theo thời gian) mà không xóa cấu trúc thư mục.
Và tôi đã sử dụng định dạng dưới đây làm việc cho tôi.
tìm / test123 / home / test_file_hip / data / nfs -mtime +6 -type f -exec rm {} \;
Cú pháp: find (đường dẫn của tệp) -mtime (lớn hơn hoặc ít hơn ngày) -type f -exec rm {} \;
-type: Đề cập loại tệp "f" cho thư mục "d" -exec: thực thi lệnh rm: remove {}: đầu ra của lệnh find
Lưu ý: Hãy kiểm tra nó trước khi sử dụng nó. Xin vui lòng sửa hoặc cập nhật nếu tôi bỏ lỡ bất cứ điều gì.
find ... rm
cấu trúc cơ bản đã được đề cập, tôi không chắc đây là một đóng góp có giá trị như một Câu trả lời mới cho câu hỏi này.