2011-08-04 25 views

Trả lời

26

Sử dụng find:

find . -perm /u+x -execdir chmod a+x {} \; 
+5

Sử dụng '-execdir'; nó an toàn hơn '-exec'. Cũng vì 'chmod' chấp nhận nhiều tệp trong một dòng lệnh,' + 'thay vì' \; 'có thể có hiệu suất tốt hơn. – jw013

+0

cảm ơn vì đã đề cập đến chế độ '+'! Các '-execdir' thay vì' -exec' squashes lợi ích hiệu suất đạt được một lần nữa, mặc dù; và kể từ khi tìm thấy cung cấp đường dẫn tập tin đầy đủ anyway, không quan trọng nhiều? lệnh nhanh nhất cho tôi là '... -exec chmod {} +' – codeling

5

Bạn có thể sử dụng tìm thấy để có được tất cả những tập tin:

find . -type f -perm -o+rx -print0 | xargs -0 chmod a+x 

Cập nhật: thêm print0 để bảo tồn không gian trong tên tập tin

+3

Đừng làm theo cách đó, nó sẽ có các khoảng trống trong tên tập tin. Nếu bạn muốn chuyển sang xargs, sử dụng tùy chọn '-print0' find và tùy chọn' -0' xargs. – Mat

Các vấn đề liên quan