Điểm:2

Xóa các tệp không khớp với mẫu bằng xargs

lá cờ dk

Lệnh sau là từ https://www.tecmint.com/xargs-command-examples/ ví dụ #9. Đó là xóa các tệp không khớp với *gz khỏi thư mục hiện tại.

$ tìm thấy . -type f -not -name '*gz' -print0 | xargs -0 -I {} rm -v {}

mục đích của là gì -print0 lập luận của tìm thấy lệnh và -0-TÔI {} lập luận của xargs chỉ huy? Tại sao chúng lại cần thiết? Cảm ơn!

Điểm:4
lá cờ hr

-print0 kể tìm thấy để xuất kết quả của nó được phân tách bằng byte rỗng thay vì ký tự dòng mới thông thường. Điều này là cần thiết nếu tên tệp có (hoặc có thể trong tương lai) chứa các ký tự dòng mới.

Sau đó bạn cần nói xargs để mong đợi dữ liệu được phân tách bằng null đi xuống đường ống - đó là những gì -0 là cho. Vì vậy, nó là cần thiết ở đây khi sử dụng -print0 trên LHS.

Trong khi đó {} là một chuỗi thay thế - khi bạn sử dụng -TÔI {}, mỗi {} trong lệnh sau sẽ được thay thế bằng một mục đầu vào. Nó chỉ thực sự cần thiết khi bạn cần kiểm soát vị trí mục xuất hiện trong dòng lệnh sau (và có tác dụng phụ là chạy một lệnh gọi duy nhất cho từng mục, tương đương với việc thêm -L 1). IMHO không cần thiết ở đây và làm cho giải pháp không hiệu quả vì nó chạy rừm một lần cho mỗi tệp được tìm thấy, thay vì theo đợt.

Lưu ý rằng tìm thấy có một -exec tùy chọn và một -xóa bỏ tùy chọn vừa tránh được vấn đề ghi/đọc dữ liệu được phân tách hoàn toàn:

tìm thấy . -type f -not -name '*gz' -exec rm -v {} +

hoặc

tìm thấy . -type f -not -name '*gz' -print -delete

(các -in ở đây để cung cấp chức năng tương tự như -v tùy chọn để rừm).

Raffa avatar
lá cờ jp
+1 ... `xargs -0` cũng là `xargs --null`
lá cờ hr
@Raffa đúng, và `-not` của find cũng là (đúng hơn là) `!` - Mặc dù vậy, tôi luôn do dự khi quá tải các câu trả lời với TMI...

Đă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.