मैं लिनक्स में मूल फ़ोल्डर में फ़ाइलों और निर्देशिकाओं को कैसे स्थानांतरित करूं?


77

लिनक्स (उबंटू) में, आप सभी फाइलों और निर्देशिकाओं को मूल निर्देशिका में कैसे स्थानांतरित करते हैं?


अब तक का सबसे पूर्ण उत्तर वाला प्रश्न जो मुझे मिला: unix.stackexchange.com/q/6393/93768
DJCrashdummy

जवाबों:


66
खोजो। -Maxdepth 1 -exec mv {} .. \;

यह छिपी हुई फ़ाइलों को भी स्थानांतरित करेगा।

आपको संदेश मिलेगा:

mv: स्थानांतरित नहीं किया जा सकता है। ' `../। ': डिवाइस या संसाधन व्यस्त

जब यह .(वर्तमान निर्देशिका) ले जाने की कोशिश करता है, लेकिन इससे कोई नुकसान नहीं होगा।


1
यह सभी फ़ाइलों को सभी उपनिर्देशिकाओं से वर्तमान निर्देशिका के माता-पिता तक ले जाएगा। मुझे -maxdepth 1यकीन है कि उपयोग करेंगे।
36फिंक

1
अब यह कहता है: mv: नहीं चल सकता है ./scripts' to ../scripts ': निर्देशिका खाली नहीं है

1
आपके पास एक निर्देशिका होनी चाहिए जिसे आपके मूल निर्देशिका में स्क्रिप्ट कहा जाता है और आपकी वर्तमान निर्देशिका में। इसे स्थानांतरित करने से पहले आपको इसका नाम बदलना होगा।
44फिंक

1
यह काम किया लेकिन आपने एक बहुत महत्वपूर्ण जानकारी को छोड़ दिया - आपको इसे उपनिर्देशिका से चलाना होगा। इसके अलावा, यह उपनिर्देशिका को स्वयं नहीं हटाएगा, इसलिए आपको एक निर्देशिका वापस करनी होगी और उपनिर्देशिका पर एक rddir करना होगा।
crafter

89

मैं यहाँ आया क्योंकि मैं इस विषय के लिए भी नया हूँ। किसी कारण के लिए ऊपर मेरे लिए चाल नहीं किया। मैंने एक फ़ाइल को dir से उसके पैरेंट dir में स्थानांतरित करने के लिए क्या किया था:

cd to/the/dir
mv * ../

12
यह छिपी हुई फ़ाइल को स्थानांतरित नहीं करता है
वेवसैलर

1 लाइनर:(cd ${ANDROID_NDK_HOME}/android-ndk-r14b/ && mv * ../)
दाविद ड्रोज़ड

10

इसे शेल में टाइप करें:

mv *.* ..

यह सभी फाइलों को एक स्तर ऊपर ले जाता है।

चरित्र *एक वाइल्डकार्ड है। तो *.debसभी .deb फ़ाइलों Zeitgeist.*को स्थानांतरित करेगा , और Zeitgeist.avi और Zeitgeist.srt को एक फ़ोल्डर ऊपर ले जाएगा, क्योंकि निश्चित रूप से, ..मूल निर्देशिका को इंगित करता है।

फ़ोल्डर्स, आदि सहित सब कुछ स्थानांतरित करने के लिए, *इसके बजाय बस का उपयोग करें*.*


3
यह dirs के साथ काम नहीं किया! या छिपी हुई फाइलें

यह dirs के साथ काम करता है, कम से कम मेरे लिए।
मातरिनस

5
आप निर्देशिकाओं को शामिल *नहीं करना चाहते *.*हैं
क्रिस एस

इसकी एक अच्छी डॉक्यूमेंट्री
BlackBurn027

6

यह इससे अधिक सरल नहीं हो सकता है:

mv * ../

छिपी हुई फ़ाइलों को स्थानांतरित करने के लिए:

mv /path/subfolder/{.,}* /path/ 

mvफ़ाइलों को स्थानांतरित करने के लिए एक कमांड है, *सभी फ़ाइलों और फ़ोल्डरों का मतलब है और ../मूल निर्देशिका का पथ है।


2

बैश में आप उपयोग कर सकते हैं shopt -s dotglob * मैच सभी फाइलों को बनाने के लिए और उनके द्वारा बस को स्थानांतरित

shopt -s dotglob; mv * ..

यह सबसे अच्छा समाधान नहीं है क्योंकि सेटिंग शेल के लिए स्थायी है जब तक आप इसे बदलते नहीं हैं

shopt -u dotglob

लेकिन मुझे लगता है कि यह जानना अच्छा है।


4
एक subshell में यह कॉल करें: (shopt -s dotglob && mv * ..)। इस तरह, विकल्प केवल उस उपधारा के लिए स्थानीय है।
मार्टिन उडिंग

अच्छा जवाब - यह सरल है, इसमें छिपी हुई फाइलें शामिल हैं और नकल के बारे में कोई त्रुटि नहीं है। ' और '..'
डैनियल हावर्ड

1

एक विधि जो हर बार कोई त्रुटि नहीं करती है और काम करती है:

ls -1A . | while read -r file                                                    
do                                                                                  
    mv "./${file}" ..                                                            
done

1
find . -maxdepth 2 -type f -exec mv {} .. \;

उपर्युक्त से सभी फाइलों को अभिभावक में स्थानांतरित करने के लिए मैंने ऊपर की भिन्नता का उपयोग किया।

मुझे वर्ष तक फ़ोल्डर्स में डेटा मिला, लेकिन मेटाडेटा का उपयोग करके मैंने उन सभी को एक ही फ़ोल्डर में पाया, जिससे इसे प्रबंधित करना आसान हो गया।

जैसे।

/data/2001/file_1
/data/2002/file_2
/data/2003/file_3

0

मान लें कि आपकी सभी छिपी हुई फाइलें डॉट के साथ शुरू होती हैं जिसके बाद एक पत्र या एक नंबर (जो उन्हें चाहिए), आप उपयोग कर सकते हैं

mv * .[A-Za-z0-9]* ..

.[A-Za-z0-9]*हिस्सा सुनिश्चित करें कि आप ले जाने की कोशिश नहीं करना है .या ..साथ है, जो विफल हो जाएगा।


0

लिनक्स में मूल निर्देशिका में सभी फाइलों और फ़ोल्डरों को स्थानांतरित करना सरल है।

उस फ़ोल्डर में जाएं और इस कमांड का उपयोग करें:

mv * /the full path

उदाहरण के लिए, यदि आपकी फ़ाइलें और फ़ोल्डर्स इस प्रकार हैं:

/home/abcuser/test/1.txt 
                   2.txt
                   3.jpg
                   4.php
                   1folder
                   2folder

सीडी के माध्यम से उस फ़ोल्डर पर जाएं:

cd /home/abcuser/test
mv * /home/abcuser

आपकी सभी फाइलें और फोल्डर abcuser फोल्डर (पैरेंट डायरेक्टरी) में चले जाएंगे।


2
धन्यवाद @ गैरेथ, उसी के बारे में था। अभिषेक, कृपया किसी भी असंबंधित लिंक को पोस्ट न करें, उस में समझ कहाँ है? इसके अलावा, कृपया अपने स्वरूपण की जाँच करें। इसके अतिरिक्त, /the full pathलिनक्स में काम नहीं करता है, तो आपको रिक्त स्थान से बचना होगा /the\ full\ path
slhck

0

निर्देशिकाओं को बदलने की कोई आवश्यकता नहीं है। पथ के अंत में बस * शामिल करें:

mv /my/folder/child/* /my/folder/

ऊपर केवल गैर छिपी हुई फ़ाइलें चलती हैं। केवल छिपी हुई फ़ाइलों को स्थानांतरित करने के लिए उपयोग करें। *

mv /my/folder/child/.* /my/folder/

दो से ऊपर एक कमांड में जोड़ा जा सकता है:

mv /my/folder/child/{.,}* /my/folder/

यह भी देखें: माता-पिता निर्देशिका में छिपी हुई फ़ाइलों सहित सभी फ़ाइलों को कैसे स्थानांतरित करें *


0
find -type f|while read line; do mv $line ${line##*/}; done

उत्तर देने में योगदान के लिए धन्यवाद। इस सरल परिदृश्यों में काम कर सकते हैं, पाइप findमें while readएक बुरी तरह से उपयोग करने के लिए है find, और बेहतर जवाब पहले से ही तैनात किया गया है।
स्कॉट

-1

उप निर्देशिका पर स्विच करें और फ़ाइलों की प्रतिलिपि बनाने या स्थानांतरित करने के लिए निम्न आदेश निष्पादित करें।

ex: a पेरेंट डाइरेक्टरी है और b सब डाइरेक्टरी है, हम बी से ए (सब डाइरेक्टरी डाइरेक्टरी डाइरेक्टरी तक) सभी फाइल्स को मूव / कॉपी करना चाहते है।

cd b
cp * ..
mv * ..

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