2014-05-16 13 views
9

में सभी फ़ाइलों को एक निर्देशिका से दूसरे में कॉपी करने के लिए कैसे करें मैं मूल फ़ोल्डर की प्रतिलिपि किए बिना सभी फ़ाइलों को एक उपनिर्देशिका से दूसरी निर्देशिका में कॉपी करना चाहता हूं। एक टर्मिनल में मैं सिर्फ इस करना होगा:बैश स्क्रिप्ट

cp -r dir1/* dir2 

और फिर dir2 ही dir1 युक्त बिना dir1 से फ़ाइलों के सभी शामिल होंगे। मैं इसे एक बैश स्क्रिप्ट में दोहराने की कोशिश कर रहा हूं और मुझे एक त्रुटि मिल रही है।

cp: cannot stat ‘./mailman/lists/mailman/*’: No such file or directory 

यह अजीब है क्योंकि मैं पुष्टि कर सकते हैं कि प्रश्न में निर्देशिका मौजूद है:

cp -r $pck_dir"/*" $TAR_DIR"/pck/" 

मैं इस त्रुटि मिलती है: यहाँ मेरी पार्टी कोड है। मेरा मानना ​​है कि बैश '*' के बारे में शिकायत कर रहा है लेकिन मुझे यकीन नहीं है कि क्यों। क्या कोई मुझे बता सकता है कि मैं क्या गलत कर रहा हूं?

+4

'cp -r" $ pck_dir "/ *" $ TAR_DIR "/ PCK /' - मतदान टाइपो के रूप में बंद करने के लिए। – devnull

+0

'{}' चारों ओर चर 'cp -r $ {pck_dir}/* $ {TAR_DIR}/pck/' – PradyJord

+2

का उपयोग करने में कोई भी समस्या यह स्पष्ट रूप से बताए गए उत्तर के साथ स्पष्ट रूप से एक प्रश्न है। मुझे एक ही समस्या थी और इस सवाल के लिए धन्यवाद, अब मैं नहीं हूं। इस सवाल को बंद करने के लिए स्पष्टीकरण का कोई मतलब नहीं है। – andreasdr

उत्तर

10

devnull की टिप्पणी पर विस्तार:

  • किसी भी तरह का एक वाइल्डकार्ड के आसपास के उद्धरण, * की तरह, वाइल्डकार्ड के विस्तार से खोल पाएगा। इस प्रकार, आपको केवल "/*" लिखना चाहिए यदि आप एक शाब्दिक स्टार के बाद स्लैश चाहते हैं।

  • एक unquoted चर शब्द विभाजन के अधीन होगा। इसलिए, यदि pck_dir का मान my dir था, तो $pck_dir"/*" को दो शब्दों my और dir/* तक बढ़ाया जाएगा और दोनों शब्द अलग-अलग तर्कों के रूप में cp पर पारित किए जाएंगे। जब तक आप शब्द विभाजन नहीं चाहते हैं, तो शैल चर हमेशा डबल कोट्स में होना चाहिए।

इस प्रकार, आप क्या चाहते हैं पाने के लिए, का उपयोग करें:

cp -r "$pck_dir"/* "$TAR_DIR/pck/" 
2

इसके बजाए rsync कमांड लाइन का उपयोग करें।

rsync -auv dir1/dir2/

रिकर्सिवली में फ़ोल्डर dir2 से फ़ोल्डर dir1 सभी फाइलों को सिंक्रनाइज़ करेगा।

आदमी rsync

अधिक विवरण प्राप्त करने के लिए इस comand लाइन का उपयोग करने को पता है।

संबंधित मुद्दे