मुझे लगता --include
है कि फ़ाइलों का एक सबसेट शामिल करने के लिए उपयोग किया जाता है जो अन्यथा --exclude
केवल उन फ़ाइलों को शामिल करने के बजाय बाहर रखा जाता है । दूसरे शब्दों में: आपको यह सोचना होगा कि क्या अर्थ शामिल नहीं है ।
इसके बजाय कोशिश करें:
rsync -zarv --include "*/" --exclude="*" --include="*.sh" "$from" "$to"
Rsync संस्करण 3.0.6 या उच्चतर के लिए, आदेश को निम्नानुसार संशोधित करने की आवश्यकता है (टिप्पणियां देखें):
rsync -zarv --include="*/" --include="*.sh" --exclude="*" "$from" "$to"
-m
ध्वज जोड़ने से गंतव्य में खाली निर्देशिका संरचना बनाने से बचना होगा। संस्करण 3.1.2 में परीक्षण किया गया।
इसलिए यदि हम केवल * .sh फाइलें चाहते हैं तो हमें सभी फाइलों को बाहर करना होगा --exclude="*"
, सभी निर्देशिकाओं --include="*/"
को शामिल करना होगा और सभी * .sh फाइलों को शामिल करना होगा --include="*.sh"
।
आप कुछ अच्छे उदाहरण मैन पेज के शामिल / बहिष्कृत पैटर्न नियमों को शामिल कर सकते हैं