Điểm:0

Chạy một lệnh đối với nhiều thư mục có tên hơi khác nhau

lá cờ tr

Tôi muốn chạy lệnh xóa các bản sao lưu để có thể giảm mức sử dụng đĩa. Không chắc chắn làm thế nào, nhưng * đại diện cho tất cả các thư mục dưới trang web danh mục

sudo rm -r site/*/riêng tư/sao lưu/*

Cấu trúc thư mục của tôi sẽ được đưa ra dưới đây:

ls trang web 

trang web/xin chào/riêng tư/sao lưu/
trang web/thế giới/riêng tư/sao lưu/
trang web/hello_world.txt

Đây không phải là làm việc

pLumo avatar
lá cờ in
"Điều này không hoạt động" không phải là một mô tả lỗi tốt. Điều gì xảy ra và bạn mong đợi điều gì sẽ xảy ra?
Điểm:0
lá cờ it

LƯU Ý: Điều này giả định rằng bạn sử dụng quy ước thêm ~ hậu tố để sao lưu. Nếu bạn sử dụng cái gì khác, bạn cần phải thay đổi tìm thấy lập luận cho phù hợp. Ví dụ: nếu bạn sử dụng, Nếu bạn thay vì một cái gì đó như .bak, các *~ thay vào đó nên là .bak.

Thử cái này:

Đầu tiên, chạy

Sudo find /sites -type f -name '*~' 

và xem qua đầu ra. Nếu bạn cảm thấy thoải mái với việc xóa các tệp trong danh sách, hãy nhập lại lệnh, nhưng chuyển đầu ra thành rừm như trong

sudo find /sites -type f -name '*~' -print0 | xargs -0 /usr/bin/rm

Điều này sẽ khiến trình bao thực thi rm PATHNAME trên mỗi PATHNAME trong danh sách.

Các * nhân vật trong đánh đập là ký tự đại diện. Nó sẽ khớp với một hoặc nhiều phiên bản của hầu hết mọi ký tự. Ngoại lệ đáng chú ý nhất đối với quy tắc này là / ký tự, đó là lý do tại sao nó chỉ khớp với một thư mục tại một thời điểm trong ví dụ của bạn. Sử dụng ** để khớp với bất kỳ số lượng thư mục nào trong một tên đường dẫn.

CHỈNH SỬA:

Chỉ cần nhận thấy rằng bạn đã liệt kê thư mục của mình là các trang web/... và không /trang web/.... Bạn cần chắc chắn rằng tham số đầu tiên được chuyển đến tìm thấyđường dẫn đầy đủ đến thư mục. Nếu không, nó sẽ chỉ trả về một lỗi.

CHỈNH SỬA 2:

Trong khi tôi đang sửa lệnh thứ hai, tôi nhận ra rằng tìm thấy chính nó có thể làm những gì rm đang làm mà không cần thực hiện thêm bất kỳ cuộc gọi nào. Điều này sẽ hoạt động, nhưng tôi vẫn không khuyên bạn nên làm điều đó mà không chạy phiên bản hàng đầu trước để xem chính xác những gì sẽ bị xóa. Lệnh là

Sudo find /sites -type f -name '*~' -delete

Như một mẹo cuối cùng, nếu bạn sử dụng tìm thấy rất nhiều và có các bản sao lưu hệ thống, bạn sẽ thấy đầu ra của mình bị các bản sao vượt qua. Nếu vậy, hãy tra cứu - tỉa Tùy chọn. Nó sẽ giữ bất kỳ thứ gì khớp với đối số liên quan của nó ra khỏi đầu ra.

Nate T avatar
lá cờ it
@steeldriver cảm ơn... một lần nữa. Tôi đã nghĩ nó đọc từ stdin khi không có đối số. Tôi đã kiểm tra mọi thứ cho đến đó trên thiết bị đầu cuối của mình, chỉ vì tôi không muốn bất kỳ ai xóa hệ thống tệp của họ trên tài khoản của mình. Bây giờ tôi ước mình đã tạo một hoặc hai tập tin giả. Lỗi của tôi. Sửa chữa nó ngay bây giờ. cảm ơn lần nữa.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.