मूल फ़ोल्डर में फ़ोल्डर सामग्री को स्थानांतरित करें - लिनक्स कमांडलाइन


18

मेरे पास एक फ़ोल्डर है जिसमें फ़ोल्डरबी होता है जिसमें बहुत सारी फाइलें होती हैं। मैं फ़ोल्डरबी से छुटकारा पाना चाहूंगा, लेकिन इसकी सामग्री नहीं। मैं चाहता हूं कि वे सामग्री फ़ोल्डरए के अंदर हों। मैं कमांडलाइन पर इसे कैसे पूरा कर सकता हूं?

जवाबों:


28
$ cd /path/to/folderA
$ mv folderB/* .
$ rmdir folderB

1
mv folderB / *। ? डॉट क्या है?
NewLinuxUser

8
डॉट फ़ाइलों के लिए बाहर देखो (फ़ाइलें जिनके नाम से शुरू होती हैं।) क्योंकि इसमें वे शामिल नहीं होंगे। क्या mv folderB/.* .उन्हें साथ ही स्थानांतरित करने के लिए। @NewLinuxUser, आपके प्रश्न में डॉट कार्यशील निर्देशिका के लिए एक उपनाम है (इस मामले में, folderA)।
ब्रायन

1
यदि folderB/folderBमौजूद है तो यह विफल हो जाता है, इसलिए स्क्रिप्ट में इसका उपयोग करने से सावधान रहें।
filipos

1
यह भी विफल रहता है अगर folderBफ़ाइलों की एक पागल राशि होती है। bash: /bin/mv: Argument list too longके उपयोग के कारण आप देखेंगे *। अगर ऐसा फायदा नहीं है mvसंयोजन में साथ findके रूप में, @amphetamachine द्वारा कहा गया है या एक साथfor loop
जेवियर डे ला रोजा

2

शीघ्र जवाब:

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"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.