2009-03-09 48 views
6

Có thể ai đó vui lòng cho tôi một lệnh đệ quy sẽ đi qua một thư mục và tạo tất cả các tệp bình thường cho phép 644 và tất cả các thư mục con 755?Có một lệnh trình bao để đệ quy cho phép các thư mục và tệp không?

Tôi thực sự cảm thấy mệt mỏi khi thực hiện việc này theo cách thủ công mỗi lần tôi phải cài đặt thứ gì đó trên máy chủ của mình. Tôi không biết đủ BASH (Shell?) Lệnh để làm điều này.

Trả lời

12

Quyền đầu tiên thay đổi quyền đối với tệp và quyền thay đổi thư mục thứ hai trong thư mục hoạt động và thư mục con của nó.

find . -type f -print0 | xargs -0 chmod 644 
find . -type d -print0 | xargs -0 chmod 755 
+0

đơn giản và trực tiếp. Làm tốt. –

+0

Hoặc ít nhất nó là trước khi kinh doanh '-print0' và' -0'. Mọi người luôn đề nghị và tôi biết tại sao, nhưng nó làm tôi khó chịu. –

+0

Tuyệt vời, làm việc như một điều trị. Bạn đã tiết kiệm thời gian và chán nản ngoài lời nói !! : P – Abs

15

Có tùy chọn X cho điều đó.

chmod a+X * -R 

Thao tác này sẽ chỉ thực thi bit cho các thư mục chứ không phải tệp. Để thiết lập 644, 755, tương ứng với một lệnh, sử dụng:

chmod a=rX,u+w <files/dirs> -R 
+1

Bạn học điều gì đó mới mỗi ngày. Hữu ích! –

3

Sử dụng tên chế độ mang tính biểu tượng thay vì cho phép số liệu:

chmod -R u=rwX,go=rX somedir 

Cờ X phép chỉ đặt thư mục hay tập tin đã thực thi như thực thi , cờ -R có nghĩa là "đệ quy" và áp dụng các quyền đối với tất cả nội dung của somedir.

2

Không, không có lệnh nào để thay đổi đệ quy các quyền. Nếu có một lệnh như vậy, nó sẽ vi phạm câu thần chú Unix: Do One Thing And Do It Well.

Tuy nhiên, có hai lệnh: một để đệ quy (find) và một để thay đổi quyền (chmod).

Vì vậy, dòng lệnh kỳ diệu là:

find . -type d -exec chmod 0755 '{}' + -or -type f -exec chmod 0644 '{}' + 
+0

Sai. Và những gì về đọc câu trả lời khác đầu tiên? – ypnos

+1

Điều gì là sai? Bạn thậm chí có * thử * lệnh đó không? Nó hoạt động trên mọi máy tính mà tôi đã làm việc, nó tương thích với POSIX, nó tuân thủ với Đặc tả Unix đơn. Không giống như tất cả các câu trả lời khác dựa trên các tiện ích mở rộng không theo tiêu chuẩn không có sẵn trên nhiều nền tảng ... –

+1

... hoặc chúng không giải quyết được sự cố mà OP nói. –

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