tập tin chmod chỉ trong tất cả các thư mục con


54

Xin ai đó giúp tôi với chmod, tôi có cấu trúc tệp sau

-dir1
--file1
--file2
--dir1a
---file1a1
---file1a2
--dir1b
---file1b1
---file1b2

Làm cách nào để tôi chmod 655 cho tất cả các tệp trong dir1 và tất cả các thư mục con? Vì vậy, tất cả các tệp sẽ có quyền 655 và tất cả các thư mục sẽ vẫn như cũ.

Cảm ơn bạn

Câu trả lời:


108

Sử dụng tốt hơn

find . -type f -exec chmod 655 -- {} +

Giải pháp đề xuất khác từ @sagarchalise sẽ không hoạt động nếu tên tệp chứa khoảng trắng hoặc bắt đầu bằng dấu gạch ngang.


16
Liên quan, để chmod tất cả các thư mục bạn có thể sử dụng find . -type d -exec chmod 755 {} +để thay đổi tất cả các thư mục thành 755.
Kris Harper

2
+ Cho là gì?
Brettski

3
@Brettski: +dấu hiệu được mở rộng bằng finddanh sách các đường dẫn tệp (hoặc một phần của nó, nếu quá dài).
enzotib

3
Cái gì - cho?
Phương Đông

2
Chỉ --ra kết thúc của các tùy chọn dòng lệnh. Điều này ngăn một tập tin bắt đầu bằng một dấu gạch nối không được hiểu là một tùy chọn dòng lệnh như nó sẽ xuất hiện sau --.
Tim Tonomall

8

Tôi nghĩ rằng đi vào bên trong dir1

find . -type f | xargs chmod 655

sẽ thực hiện các mẹo.


điều này cũng hoạt động nhưng tôi đã nhận được một số cảnh báo với "Không có tệp hoặc thư mục như vậy"
netic

@manetic: nó phụ thuộc, như đã nói trong câu trả lời của tôi, về tên tệp chứa khoảng trắng.
enzotib

4
Để hoàn thiện, thay đổi nó để tìm. -type f -print0 | xargs -0 chmod 655 sẽ khắc phục vấn đề không gian mà tôi tin, mặc dù câu trả lời của @ enzotib ngắn gọn hơn
matt freake

những gì matt freake đã nói
Sergiy Kolodyazhnyy
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.