mv: निर्देशिका खाली नहीं है


155

मैं उसी फ़ोल्डर के साथ किसी अन्य निर्देशिका के भीतर एक निर्देशिका की सामग्री को स्थानांतरित करना चाहता हूं।

यहाँ एक उदाहरण है:

मैं है ./backupजो निर्देशिका है baseऔर test। अब मैं इन निर्देशिकाओं को आगे बढ़ाना चाहता हूं ./backupArchives

मैं इसका उपयोग करता हूं:

mv ./backup/* ./backupArchives

लेकिन मुझे त्रुटि मिली

mv: cannot move './backup/base' to './backupsArchive/base': Directory not empty

मैंने उपयोग करने की कोशिश की --force, लेकिन कोई भाग्य नहीं। क्या इसे स्थानांतरित करने का एक तरीका है जब फ़ोल्डर्स पहले से मौजूद हैं?

नोट: मैं केवल सामग्री को मर्ज करना चाहता हूं, कोई ओवरराइटिंग नहीं है।


क्या आप केवल फ़ोल्डर की सामग्री को गंतव्य में मर्ज करने का प्रयास कर रहे हैं, या क्या आप गंतव्य में क्या है इसे अधिलेखित करने का प्रयास कर रहे हैं। (यह भी अगर आप का उपयोग किए बिना पूरी त्रुटि है, ...... डेटा काटना मदद करता है)
थॉमस वार्ड

मैं केवल सामग्री को मर्ज करना चाहता हूं, कोई ओवरराइटिंग नहीं है।
उडक

2
@ यूडीके भले ही यह काम करेगा, ध्यान दें कि यह दो निर्देशिकाओं की सामग्री को मर्ज नहीं करेगा । एक निर्देशिका को स्थानांतरित करने से इसका लक्ष्य बदल जाएगा। rsyncइसके बजाय एक नज़र है , यह विलय करेगा।
19'13

जवाबों:


188

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

rsync -a backup/ backupArchives/इसके बजाय उपयोग करें । उसके बाद rm -rf backup/*

उपयोग करने के बजाय rsync, आप शास्त्रीय भी कर सकते हैं

(cd backup && tar c .) | (cd backupArchives && tar xf -)

जो आपको अधिक geek अंक कमाता है।


4
अच्छी बातें पता है! दोनों शानदार काम कर रहे हैं। धन्यवाद!
उदक

5
गीक अंक सबसे अच्छे अंक हैं: डी
मैडमाइक

2
यह ध्यान दिया जाना चाहिए कि आपके पास मुक्त स्थान में फ़ोल्डर का आकार है। और भयानक समस्याओं का कारण होगा अगर नहीं।
पोग्रिंडिस

4
@Pogrindis कृपया बताएं कि क्या भयानक समस्याएं होंगी, और वे किसी अन्य डिस्क से पूरी डिस्क पर लिखने के प्रयास से अलग कैसे हैं? वास्तव में, चूंकि दोनों ऑपरेशन मूल निर्देशिका को अक्षुण्ण रखते हैं, यदि ऑपरेशन rm -rf backupArchivesबिना परिणाम के आपको विफल कर देता है , तो अकेले 'भयानक' होने दें।
zwets

4
शास्त्रीय दृष्टिकोण के नामकरण के लिए धन्यवाद, rsync उपलब्ध नहीं होने पर बहुत उपयोगी है! इसके अलावा sudo sh -c '(cd backup && tar c .) | (cd backupArchives && tar xf -)'
सूडो के

39

त्वरित और गंदे, यदि आप जानते हैं कि आप क्या कर रहे हैं:

cp -r ./backup/* ./backupArchives && rm -R ./backup/*

3
मेरे सुरक्षित मोड में काम करता है, जीनियस।
बैन_उजर

4

जिस निर्देशिका को आप आगे बढ़ा रहे हैं उसके बाद आपको *किसी भी पाठ या संख्या का प्रतिनिधित्व करने की आवश्यकता है । उदाहरण के लिए:

mv /var/www/* /recovery/wwwrecovery/

यदि आप फ़ाइलों को आगे बढ़ाते हैं, तो आप सभी इस प्रकार हैं:

mv /var/www/index.php /recovery/index.php

एक और तरीका है कि टार का उपयोग करके उस फ़ोल्डर की सामग्री को पैक करें:

tar -cvzpf backup.tar.gz /var/www 

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

फ़ाइलों को किसी अन्य फ़ोल्डर के उपयोग के लिए निकालने के लिए

tar -xvzpf /var/www/

यदि आपको किसी ऐसे स्थान पर प्रतिलिपि करने की आवश्यकता है जो आपके पास नहीं है, तो sudoजो भी आप उपयोग करने का निर्णय लेते हैं, उसके बाद कमांड के साथ अपनी कमांड को पूर्व निर्धारित करना सुनिश्चित करें।

sudo tar -cvzpf backup.tar.gz /var/www/

मैं Ubuntu 12.10 का उपयोग कर रहा हूं और मुझे अधिक जानकारी के लिए mv: अमान्य विकल्प - 'R' कोशिश `mv --help 'मिल रही है। वास्तव में .tar अच्छा है, लेकिन मुझे यह जानने की जरूरत है कि इस स्थिति के लिए मेरी फ़ाइलों को कैसे स्थानांतरित किया जाए। आपकी मदद के लिए धन्यवाद
उडक

मैं 12.04 डेस्कटॉप और सर्वर का उपयोग कर रहा हूं और दोनों अच्छी तरह से काम करता है। लापरवाह रहो, अगर तुम अंतरिक्ष betwen फॉल्वर और -R नहीं बनाते। मैं भी बिना -R मेरे लिए उसी तरह से काम करता है, बिना -R की कोशिश करता हूं, लेकिन वर्तनी के साथ सावधानी बरतता हूं: लिनक्स कम और अपरकेस अक्षर मायने रखता है !!! पथ से अधिक गतिमान मूविंग या मूविंगफ्रॉम स्थान है। यदि आपके पास वह फ़ोल्डर नहीं है जिसे आप उसके बाद सिर्फ पु-सी के लिए स्थानांतरित करना चाहते हैं और यह इसे बनाएगा। पहले भी प्रयास करें: अपने फ़ोल्डर का नाम ढूंढें और इस कमांड को रूट से चलाएं, बस यह देखने के लिए कि क्या यह दूसरी जगह मौजूद है यदि आप कुछ वर्तनी याद करते हैं। मुझे सटीक आज्ञा दें कि आपने उपयोग किया
दिमित्रीस थियोडोरिडिस

क्या thaaa ..... betwen में वह फ़ाइल नाम **
थियोडोरिडिस

1
यह -Rनिश्चित रूप से पहले तर्क के बाद नहीं आना चाहिए। विकल्प (लगभग) हमेशा कमांड तर्कों से पहले होते हैं। इसके अलावा, mvकोई -Rविकल्प नहीं है, और अंत में, पुनरावृत्ति एक के लिए अप्रासंगिक है mv। @DimitrisTheodoridis कृपया पहले अपने उत्तर का परीक्षण करें।
19'13

हाँ मेरे भाई आप सही हैं, मुझे हमेशा मेरी वर्तनी में समस्या है, और मुझे रास्ते में या उस के लिए टर्मिनल के साथ समस्या है या नहीं मिला या नई फ़ाइलों और निर्देशिकाओं का निर्माण जो मुझे नहीं पता, बस आधार वर्तनी के लिए ... वैसे मैं इस्तेमाल किया cp कमांड, यहाँ से उस ब्रो के लिए mv sory लिखा: D
दिमित्री थिओडोरिडिस

4

ज़रूर rsyncकाम करता है, लेकिन यह मशीन के लिए भी काम कर सकता है जो समर्थन नहीं करता है rsync(यानी cpanel में, जो rsync डिफ़ॉल्ट रूप से स्थापित नहीं है)।

उपयोग करने के बारे में क्या:

cd /path/to/backup/ && cp -R --parents ./* ../backupArchives

backupयदि आवश्यक हो तो निर्देशिका को हटा दें

नोट 1: क्रियान्वित करने से पहले आपको निर्देशिका की आवश्यकता होती cdहैbackupcp -R --parents ...

नोट 2: backupArchivesनिर्देशिका को दोबारा जांचें यदि आपको बैकअप से नई फाइलें मिलीं।


1

प्रश्न पूछने से पहले, आइए एक सरलीकृत मामले पर विचार करें।

मान लीजिए / घर / व्यवस्थापक में हमारे पास दो फ़ोल्डर हैं fooऔर barजिसमें एक ही उपनिर्देशिका संरचना है, लेकिन प्रत्येक में अलग-अलग फाइलें हैं। अब हम उन्हें एक में मिलाना चाहते हैं। जब हम चीजों को करते हैं mv foo/* bar, तो त्रुटि mv: directory not emptyउत्पन्न होती है।

मेरा समाधान कमांड लाइन टूल्स को छोड़ना और जीयूआई फ़ाइल प्रबंधक पर स्विच करना है, उदाहरण के लिए, डॉल्फिन। आप नाम बदलना जब fooकरने के लिए barडॉल्फिन में, यह आप गंतव्य फ़ोल्डर में लिखने के लिए विकल्प देता है, और मौजूदा फ़ाइलों को अधिलेखित करना है कि क्या, सहभागी कहता है। यह कॉपी और डिलीट से बचा जाता है, जो प्रभावी रूप से कोड की एक भी लाइन के बिना आपका समय बचाता है।

पुनश्च: मैं वहाँ से बाहर हर फ़ाइल प्रबंधक का परीक्षण नहीं किया। लेकिन उनमें से ज्यादातर में यह सुविधा होनी चाहिए।

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