मुझे लगता --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"।
आप कुछ अच्छे उदाहरण मैन पेज के शामिल / बहिष्कृत पैटर्न नियमों को शामिल कर सकते हैं