मैं एक svn रिपॉजिटरी में संशोधित फ़ाइलों को किसी अन्य निर्देशिका में कॉपी करना चाहता हूं, जबकि उनकी निर्देशिका संरचना को रखना।
Awk और xargs manpage पढ़ने के बाद मुझे बदला हुआ फ़ाइल नाम पाने का एक तरीका मिल गया है:
$ svn status -q | awk '{ print $2 }' | xargs -d \\n -I '{}' cp '{}' /tmp/xen/
लेकिन समस्या यह है कि इस तरह से निर्देशिका संरचनाएं संरक्षित नहीं हैं, मैं इस तरह से फाइलों को कॉपी करना चाहता हूं:
./common/superp.c -> /tmp/xen/common/superp.c
./common/m2mgr.c -> /tmp/xen/common/m2mgr.c
./common/page_alloc.c -> /tmp/xen/common/page_alloc.c
./arch/x86/mm.c -> /tmp/xen/arch/x86/mm.c
./arch/x86/mm/shadow/private.h -> /tmp/xen/arch/x86/mm/shadow/private.h
मैंने cp कमांड को cp '{}' / tmp / xen / '{}' में बदलने की कोशिश की है, लेकिन उसने कहा कि ऐसी कोई फाइल या निर्देशिका नहीं है। क्या कोई प्रतिलिपि प्रतिलिपि फ़ाइल बनाने और यदि आवश्यक हो तो निर्देशिका बनाने का कोई तरीका है? और कृपया बताएं कि क्या यह कमांड चेन सरल किया जा सकता है। :-)
आपके सभी जवाबों के लिए शुक्रिया। चूंकि निर्देशिका थोड़ी बड़ी है, इसलिए मैं cp -R या rsync का उपयोग करके पूरी निर्देशिका की प्रतिलिपि नहीं बनाना चाहता। टार्क पाइप का उपयोग करने का सीके का सुझाव काफी उपयोगी है।
svn status -q | awk '{ print $2 }' | xargs tar cf - | (cd /tmp/xen/; tar xvf -)