Thẻ hoang dã để chọn tất cả các thư mục trong một thư mục là gì


13

tôi muốn thiết lập bit dính cho tất cả các thư mục trong một thư mục không bao gồm các tập tin. Có thẻ hoang dã để làm điều này?

#sudo chmod g+s /var/www/<WILD_CARD_FOR_ALL_DIRECTORIES>

Câu trả lời:


24

Sử dụng */để chỉ khớp với các thư mục.

chmod g+s /var/www/*/

Để phù hợp với tất cả các thư mục và thư mục con sử dụng **/*/(miễn là bạn đã globstarbật trong bash):

shopt -s globstar
chmod g+s /var/www/**/*/

2
Hoạt động tốt, nhưng sẽ phá vỡ ngay khi chiều dài dòng lệnh mở rộng vượt quá giới hạn độ dài dòng lệnh. -> cyberciti.biz/faq/argument-list-too-long-error-solution
Bonsi Scott

1
vâng, tôi nhận thức rõ về điều đó. Tuy nhiên, OP đã yêu cầu một "ký tự đại diện".
dogbane

vâng tôi yêu cầu ký tự đại diện, thanq.
Necktwi

tôi biết rằng anh ấy đã yêu cầu một giải pháp ký tự đại diện. Tôi chỉ chỉ ra rằng nó sẽ thất bại trong một số trường hợp. Khác ở chỗ, không có phê bình nào để xem ở đây (Tôi đã nhận xét chưa được nêu lên, vì đó là một giải pháp hiệu quả cho hầu hết các trường hợp) ^^
Bonsi Scott

13

bạn có thể sử dụng find, xem ví dụ dưới đây

find /var/www/ -type d -exec chmod g+s {} \;

3
Điều này là tốt, nhưng không phải là một ký tự đại diện - nhưng nó có lợi thế là không thất bại do nhiều thư mục
Bonsi Scott

Lưu ý rằng đây là đệ quy theo mặc định. Nếu bạn chỉ muốn lệnh của mình được áp dụng cho cấp cao nhất, bạn có thể sử dụng -maxdepth findđối số.
Kris Harper

0

Đây KHÔNG phải là ký tự đại diện, vì vậy tôi xin lỗi vì không trả lời, tuy nhiên ...
ls -al |grep ^d | awk '{print$NF}'sẽ liệt kê tất cả các thư mục trong thư mục hiện tại, tùy bạn quyết định xem bạn có muốn xử lý ...loại bỏ chúng không.

echo $(ls -al |grep ^d | awk '{print$NF}') không làm cho nó hoạt động như một ký tự đại diện


Điều này sẽ phá vỡ nếu các tệp của bạn có khoảng trắng hàng đầu hoặc dấu hoặc dòng mới.
Chris Down
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.