2012-04-16 11 views
5

को कॉपी करने के बाद एक और निर्देशिका एक ही पदानुक्रम रखने के लिए एक पूरे नेस्टेड निर्देशिका में केवल हेडर फाइल कॉपी कर सकते हैं मैं एक निर्देशिका जो हेडर फाइल का एक बहुत (ज) और अन्य ओ और ग फ़ाइलों है है और अन्य फाइलें। इस निर्देशिका के अंदर कई नेस्टेड निर्देशिका है। मैं नई निर्देशिका में एक ही संरचना को संरक्षित करने वाली एक अलग निर्देशिका में केवल हेडर फ़ाइलों की प्रतिलिपि बनाना चाहता हूं।कैसे मैं नया फ़ोल्डर

cp -rf oldDirectory newDirectory सभी फाइलों को कॉपी कर देंगे। मैं केवल हेडर फाइल कॉपी करना चाहते हैं।

+0

संभावित डुप्लिकेट (http [यूनिक्स/लिनक्स में विशिष्ट फ़ाइलों की रिकर्सिव प्रतिलिपि?]: //stackoverflow.com/questions/9622883/recursive-copy-of-specific-files-in-unix-linux) – iammilind

उत्तर

7
(cd src && find . -name '*.h' -print | tar --create --files-from -) | (cd dst && tar xvfp -) 

आप सीपीआईओ के साथ इसी तरह कुछ कर सकते हैं अगर आप सिर्फ हार्ड लिंक करने के बजाय उन्हें कॉपी करने की फ़ाइलों चाहते कुछ है, लेकिन यह है बाद में थोड़ा mv'ing की आवश्यकता होने की संभावना है। यदि आपके पास बहुत सारे डेटा हैं और साझा नहीं करते हैं (या आवश्यकता है!) साझा करना, यह बहुत तेज़ हो सकता है। अगर डीएसटी में कोई स्रोत होना आवश्यक है तो यह भ्रमित हो जाता है - यह है, अगर यह सिर्फ एक साइड इफेक्ट नहीं है:

  1. src -name '* .h' -print | सीपीआईओ -pdlv डीएसटी
  2. mv डीएसटी/src/* डीएसटी /।
  3. rmdir डीएसटी/src
+0

अच्छा लगता है ... मुझे लगता है कि सीपीआईओ मैं esp के लिए क्या देख रहा था। डीडी विकल्प। – avimonk

1
cp -rf oldDirectory/*.h newDirectory 

या की तरह (वास्तविक पथ पर निर्भर करता है)

find oldDirectory -type f -name "*.h" -print0 | xargs -file cp file newDirectory 
+2

पहली समाधान प्रतियां केवल। गहराई 1 पर फ़ाइलें। क्या होगा अगर हमारे पास गहराई 2 और 3 पर हेडर फाइलें हों और इसी तरह। – avimonk

1

यह एक मेरे लिए काम किया:

rsync -avm --include='*.h' -f 'hide,! */' . /destination_dir 

here से

की