xóa đệ quy nhưng giữ tệp .gitignore


0

Tôi đã thử một số phương thức từ SU nhưng tôi không thể làm điều này: Tôi có một thư mục (ví dụ: / var / www / tmp /) có chứa một số tệp và thư mục. Tôi muốn xóa tất cả các tệp và thư mục trong thư mục này ngoại trừ các tệp ẩn trong / var / www / tmp, làm cách nào để làm điều đó?

Cảm ơn!

chỉnh sửa: để rõ ràng, tôi muốn sử dụng điều này trong một cronjob

Câu trả lời:


1
find /var/www/tmp -mindepth 1 -maxdepth 1 ! -name ".*" -exec rm -r -- {} +

Sẽ tìm thấy các tệp ở độ sâu tối đa (và tối thiểu) 1 (tức là các tệp trực tiếp trong thư mục đã cho) không bắt đầu bằng dấu chấm và thực hiện rm -rvới các đối sánh dưới dạng đối số.

Hãy thử nó với một tiếng vang đơn giản hoặc một cái gì đó đầu tiên để không tự bắn vào chân mình trước khi bạn hiểu chính xác nó hoạt động như thế nào đối với bạn.

Điều này giải quyết câu hỏi của bạn về việc giữ tất cả các tập tin ẩn. Chủ đề của bạn hơi khác một chút, nhưng lệnh find dễ dàng được sửa đổi để thay vào đó chỉ cần bỏ qua các tệp có tên .gitignore.


Điều này không hoạt động, bởi vì nó thực sự cũng xóa thư mục / var / www / tmp, vì đó là lần truy cập đầu tiên mà nó nhận được
FLX

OK, tôi sẽ thêm -mindepth 1. Đó là những gì xảy ra với hack cao bồi :-).
Daniel Andersson

2

Trừ khi bạn có bộ tùy chọn shell dotglob, cd /var/www/tmp; rm -rf *sẽ làm những gì bạn muốn


điều đó thật tuyệt, nhưng tôi dự định sẽ sử dụng nó trong một cronjob, lời xin lỗi của tôi vì đã không đủ rõ ràng
FLX

Nó không hoạt động khi bạn viết nó vào crontab? Các lệnh Crontab nên được thực thi bởi sh.
jpalecek

Không, nó không. Thêm vào đó, tôi xem xét một rủi ro lớn nếu không thể tìm thấy thư mục và nó bắt đầu xóa nội dung khỏi thư mục mà nó đã khởi động. Tuy nhiên, có thể thay đổi điều này bằng cách sử dụng && thay vì; để chuỗi lệnh.
FLX

Liên quan đến mối quan tâm của bạn về việc không tìm thấy thư mục bạn có thể thửrm -rf /var/www/tmp/*
Dustin Graham
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.