मेरे पास एक फ़ोल्डर है जिसमें फ़ोल्डरबी होता है जिसमें बहुत सारी फाइलें होती हैं। मैं फ़ोल्डरबी से छुटकारा पाना चाहूंगा, लेकिन इसकी सामग्री नहीं। मैं चाहता हूं कि वे सामग्री फ़ोल्डरए के अंदर हों। मैं कमांडलाइन पर इसे कैसे पूरा कर सकता हूं?
मेरे पास एक फ़ोल्डर है जिसमें फ़ोल्डरबी होता है जिसमें बहुत सारी फाइलें होती हैं। मैं फ़ोल्डरबी से छुटकारा पाना चाहूंगा, लेकिन इसकी सामग्री नहीं। मैं चाहता हूं कि वे सामग्री फ़ोल्डरए के अंदर हों। मैं कमांडलाइन पर इसे कैसे पूरा कर सकता हूं?
जवाबों:
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB
mv folderB/.* .उन्हें साथ ही स्थानांतरित करने के लिए। @NewLinuxUser, आपके प्रश्न में डॉट कार्यशील निर्देशिका के लिए एक उपनाम है (इस मामले में, folderA)।
folderB/folderBमौजूद है तो यह विफल हो जाता है, इसलिए स्क्रिप्ट में इसका उपयोग करने से सावधान रहें।
folderBफ़ाइलों की एक पागल राशि होती है। bash: /bin/mv: Argument list too longके उपयोग के कारण आप देखेंगे *। अगर ऐसा फायदा नहीं है mvसंयोजन में साथ findके रूप में, @amphetamachine द्वारा कहा गया है या एक साथfor loop
शीघ्र जवाब:
cd /path/to/folderA
find folderB -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir folderB
कोड-हार्डी उत्तर:
cd /path/to/folderA
folderB_temp="$(mktemp -d -t folderB.XXXXXX)"
mv folderB "$folderB_temp"
find "$folderB_temp/folderB" -maxdepth 1 -mindepth 1 -exec mv {} . \;
rmdir --parents --ignore-fail-on-non-empty "$folderB_temp/folderB"