सिमिलिंक को पीछे छोड़ते हुए फ़ाइलों को कैसे स्थानांतरित करें?


9

मैं एक निर्देशिका से दूसरी निर्देशिका में फ़ाइलों को कैसे स्थानांतरित / कॉपी कर सकता हूँ, जिससे मूल निर्देशिका में सहानुभूति निकल जाए । मुझे पता ln -sहै कि गंतव्य में सीमलिंक बनाता है, लेकिन मैं स्रोत निर्देशिका में सीमलिंक को छोड़ना चाहता हूं और वास्तविक फाइलों को एक नए स्थान पर ले जाना चाहता हूं। मैं यह कैसे कर सकता हूँ?


इस सवाल का सबसे अच्छा जवाब यहाँ है: unix.stackexchange.com/a/228166/7000
श्रीधर सरनोबत

जवाबों:


4

फ़ाइलों को व्यक्तिगत रूप से संसाधित करें, जैसे,

cd $original_directory  
for i in <files to process> ; do  
    mv ./$i $new_directory/  
    ln -s $new_directory/$i ./$i
done

या, यदि कॉपी करते हैं, तो mvकमांड लाइन को बदलें

    cp ./$i $new_directory/  
    rm ./$i   

1
सीपीपी / आरएम संस्करण - इसके संभावित लाभ क्या हैं? ऐसा लगता है कि यह केवल बहुत धीमी गति से करता है :)
सर्गेई

@ सेर्गेई वन बाहर निकलने की स्थिति की जांच कर सकता है cpऔर केवल तभी निकालने के लिए आगे बढ़ सकता है जब यह सफल रहा हो।
लार्जो

@lgarzo: यह बहुमूल्य अगर होगा mvजाँच नहीं कर रहा था, तो प्रतिलिपि फ़ाइल को हटाने से पहले सफल रहा - लेकिन यह है कि में एक गंभीर बग होगा mv:)
सेर्गेई

क्या "$ new_directory" और "<files to process>" "विशेष चर" हैं, जहां अंतिम तर्क जो मैं स्क्रिप्ट देता हूं उसे हमेशा "$ new_directory" माना जाएगा और जो भी प्रारंभिक तर्क "<files to process>" माना जाता है। क्या यह मेरे द्वारा लिखी गई किसी अन्य स्क्रिप्ट पर लागू होता है? या क्या आप यह कह रहे हैं कि मुझे "$ 1" और "$ 2" का उपयोग करके रिक्त स्थान भरना चाहिए? प्रश्न के लिए क्षमा करें, लेकिन मैं सामान्य रूप से कोडिंग करने के लिए बहुत नया हूं।
डेक्स

1
बदलें $original_directoryऔर $new_directoryउन निर्देशिकाओं के साथ जिन्हें आप / से, या उन्हें इस तरह सेट करना चाहते हैं original_directory=/home/walt/from। लिपियों में उपयोग के लिए, आपको स्वयं तर्कों को पार्स करना होगा। देखें builtin getopts में man bash
वाल्टिनेटर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.