Làm cách nào để thay đổi quyền của nhiều tệp được tìm thấy bằng lệnh find?


11

Tôi có một thư mục với nhiều tập tin. Một phần của các tệp có 755quyền và phần khác có 644quyền. Tôi muốn chuyển đổi các tập tin có 755quyền 644. Tôi đã thử dòng sau bằng cách chạy nó từ thư mục:

find . -perm 755 -exec chmod 644 {}\;

Tuy nhiên, do đó, quyền chỉ thay đổi đối với chính thư mục và sau khi thay đổi lại, tôi phát hiện ra rằng các quyền của tệp vẫn không thay đổi. Tôi có bỏ lỡ điều gì không?


Lệnh của bạn loại bỏ bit thực thi khỏi thư mục, khiến nó không thể chdir vào nó và xem các tệp mà nó chứa. Đó là lý do tại sao lệnh dường như không hoạt động. Hãy thử find ./ -type f -exec chmod -x {} \;thay thế.
Shadur

Câu trả lời:


16

Ok, có vẻ như tôi đã tìm thấy vấn đề. Dường như phải có một không gian bắt buộc giữa {}\;, vì vậy lệnh sẽ trông như thế này:

find . -perm 755 -exec chmod 644 {} \;

Thay vì:

find . -perm 755 -exec chmod 644 {}\;

Ngoài ra, vấn đề với việc thay đổi quyền của thư mục có thể được giải quyết bằng cách thêm một -type fcờ, vì vậy nó sẽ trông như sau:

find . -type f -perm 755 -exec chmod 644 {} \;

5
Bạn có thể sử dụng +thay vì \;để giảm số lượng các quy trình con được tạo.
Kevin

-type dsẽ tìm thư mục. -type fsẽ tìm tập tin.
Mick T
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.