Câu trả lời là find -exec
là câu trả lời hay nhất nhưng nó bị thiếu hụt thường không liên quan đến việc tạo ra một quy trình con riêng biệt cho từng tệp. Tuy nhiên, chức năng này hoàn toàn hoạt động và sẽ chỉ hoạt động kém khi số lượng tệp nhận được thực sự là lớn. Sử dụng xargs
sẽ nhóm các tên tệp thành các nhóm lớn trước khi chạy một quy trình con cho nhóm của tệp đó.
Bạn chỉ cần cẩn thận khi sử dụng xargs
, bạn xử lý đúng tên tệp với không gian được nhúng, dòng mới hoặc các ký tự đặc biệt khác trong chúng.
Một giải pháp có thể giải quyết tất cả những vấn đề này là (giả sử bạn có một phong nha đủ find
và xargs
thực hiện):
find . -type f -print0 | xargs -0 chmod 644
Các -print0
nguyên nhân find
chấm dứt tên tập tin vào hoạt động sản xuất của mình với một ký tự NUL (chứ không phải là một không gian) và -0
đến xargs
cho phép nó biết rằng nó sẽ mong đợi rằng như là định dạng đầu vào.
này nên được hỏi trong ServerFault – MoshiBin
chmod thực sự sẽ có thể phân biệt giữa các tập tin, liên kết, và thư mục trên riêng của nó. – Xeoncross