मैं कमांड लाइन का उपयोग करके सभी फ़ाइलों को एक फ़ोल्डर से दूसरे में कैसे स्थानांतरित करूं?


245

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

मान लीजिए कि मैं अपने डाउनलोड फ़ोल्डर में हूं और 100 फाइलें हैं जो मैं अपने वीडियो फ़ोल्डर में स्थानांतरित करना चाहता हूं, बिना सभी फाइलों का नाम लिखना है।


आप स्थानांतरित करने के बारे में पूछ रहे हैं, filesलेकिन लोग आपको दिखा रहे हैं कि कैसे न केवल आगे बढ़ना है, filesबल्कि foldersसाथ ही साथ। क्या वह ठीक है?
आस्कर

2
@ Hontvári Levente ने एक साल पहले एक जवाब दिया था जो अब तक सबसे अच्छा, स्वच्छ, सरल लगता है, और यह काम करता है। तो इसे केवल 3 वोट कैसे मिले (वर्तमान में शीर्ष पर उत्तर के लिए 262 की तुलना में)?
रे बटरवर्थ

जवाबों:


331

एक टर्मिनल खोलें और इस कमांड को निष्पादित करें:

mv  -v ~/Downloads/* ~/Videos/

यह डाउनलोड फ़ोल्डर से वीडियो फ़ोल्डर में सभी फ़ाइलों और फ़ोल्डरों को स्थानांतरित करेगा।


सभी फ़ाइलों को स्थानांतरित करने के लिए, लेकिन फ़ोल्डर नहीं:

यदि आप डाउनलोड फ़ोल्डर से वीडियो फ़ोल्डर में सभी फ़ाइलों (लेकिन फ़ोल्डर्स नहीं) को स्थानांतरित करने में रुचि रखते हैं, तो इस कमांड का उपयोग करें

find ~/Downloads/ -type f -print0 | xargs -0 mv -t ~/Videos

केवल डाउनलोड फ़ोल्डर से फ़ाइलें स्थानांतरित करने के लिए, लेकिन उप-फ़ोल्डर से नहीं:

यदि आप डाउनलोड फ़ोल्डर से सभी फ़ाइलों को स्थानांतरित करना चाहते हैं, लेकिन डाउनलोड फ़ोल्डर में फ़ोल्डर्स के भीतर कोई भी फाइल नहीं है, तो इस कमांड का उपयोग करें:

find ~/Downloads/ -maxdepth 1 -type f -print0 | xargs -0 mv -t ~/Videos

यहां, -maxdepthविकल्प निर्दिष्ट 1करता है कि खोज, कमांड में निर्दिष्ट केवल निर्देशिका कितनी गहरी कोशिश करनी चाहिए । आप का उपयोग कर कोशिश कर सकते हैं 2, 3भी परीक्षण करने के लिए।

विस्तृत विवरण के लिए उबंटू खोज मेनपेज देखें


3
आप पूरी निर्देशिका को किसी अन्य फ़ोल्डर में ले जाने के लिए अकेले mv का उपयोग कर सकते हैं: mv फ़ोल्डर ~ / दस्तावेज़
JohnMerlino

20
FYI करें मेरा मानना ​​है कि आपका पहला कमांड ("mv -v ~ / डाउनलोड / * ~ / वीडियो /") डॉट फाइलें नहीं चलाएगा।
मार्क डोलिनर

1
हां, यह स्थानांतरित नहीं होगा। फाइल्स
अनवर

3
नायब। आपका -print0 | xargs -0 mv -t ~/Videosअधिक कुशलता से -exec mv -t ~/Videos \{\} \+:-)
Artfulrobot

3
mv -v ~/Downloads/* ~/Videos/छिपी हुई फाइलों के लिए काम नहीं करता है
FreeLightman

28
mv ~/Downloads/* ~/Videos

यह निर्देशिका में सबफ़ोल्डर्स सहित सभी फ़ाइलों को ले जाएगा जो आप चाहते हैं mv। यदि आप cp(प्रतिलिपि) या rm(हटाना) चाहते हैं तो आपको -rसबफ़ोल्डर को शामिल करने के लिए (पुनरावर्ती) विकल्प की आवश्यकता होगी ।


2
मेरे mv कमांड में -R विकल्प (Ubuntu 14.04) नहीं है।
मार्क डोलिनर

1
@MarkDoliner, हां, mvसबफ़ोल्डर्स को शामिल करने के लिए पुनरावर्ती विकल्प की आवश्यकता नहीं है। नाम बदलने के लिए भी इसका उपयोग कर सकते हैं।
एलन

मुझे जरूरत नहीं थी *। स्टार का उपयोग किए बिना एक ही बात हुई।
मायक्रॉफ़ड

फ़ोल्डर नामों के उपसर्ग में ~ / हमेशा काम नहीं करता है (बैश और गिट कम से कम काम नहीं करता है)
कृष मुनोट

स्रोत निर्देशिका खाली होने पर यह समाधान त्रुटि देगा।
पियरे थिबॉल्ट

11

साधारण मामले के लिए:

mv ~/Downloads/* ~/Videos

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

shopt -s dotglob
mv ~/Downloads/* ~/Videos

यह खोल विकल्प सेट छोड़ देता है।

एक समय के लिए dotglob उपयोग के लिए, उप-क्रम में कमांड चलाएं:

(shopt -s dotglob; mv ~/Downloads/* ~/Videos)

खुद के लिए एक नोट: अंतिम विकल्प (shopt -s dotglob; mv ~/Downloads/* ~/Videos) केवल सामग्री (छिपी हुई फ़ाइलों सहित) को काटता है। इस स्थिति में, मूल और गंतव्य फ़ोल्डर दोनों पहले से मौजूद होना चाहिए। अंत में, मूल निर्देशिका खाली हो जाती है।
पाथरोस

यह स्वीकृत उत्तर होना चाहिए
मेगर

11

rsyncउदाहरण के लिए इसका उपयोग करके संभव है :

rsync -vau --remove-source-files src/ dst/

कहाँ पे:

-v, --verbose: शब्दाडंबर बढ़ाएँ।

-a, --archive: संग्रह मोड; के बराबर होती है -rlptgoD(कोई -H, -A, -X)।

-u, --update: फ़ाइलों को रिसीवर पर नए हैं जाएं।

--remove-source-files यह rsyncफाइल को भेजने वाले पक्ष से हटाने के लिए कहता है (गैर-निर्देशिका) जो हस्तांतरण का एक हिस्सा है और प्राप्त पक्ष पर सफलतापूर्वक दोहराया गया है।

यदि आप रूट विशेषाधिकार हैं, तो sudoसंभावित अनुमति समस्याओं को ओवरराइड करने के लिए उपसर्ग ।


1
चेतावनी! --delete-after विकल्प के रूप में विख्यात जिस तरह से आप उम्मीद कर सकते हैं काम नहीं करता है। यह सफल प्रतिलिपि के बाद स्रोत फ़ाइलों को नष्ट नहीं करता है ... इसे हटाए जाने के दौरान सभी शेष / अन्य फ़ाइलों को हटा देता है । (जैसा कि @kenorb ने उल्लेख किया है ... लेकिन मैंने ध्यान से नहीं पढ़ा! DOH)
Jay Marm

4

उपयोग

mv -v ~/rootfolder/branch/* ~/rootfolder

आशा है कि ये आपकी मदद करेगा। क्योंकि मुझे एक ही दर्द था और अपनी गलती को ठीक करने में बहुत समय बर्बाद होता था।


2

किसी निर्देशिका को उसके नए नाम के साथ या उसके बिना सामग्री को स्थानांतरित करने के लिए जैसे आप mvकिसी फ़ाइल का नाम बदलने के लिए कमांड का उपयोग कैसे करेंगे :

mv -T dir1 dir2

कहाँ पे:

  • -T गंतव्य को एक सामान्य फ़ाइल के रूप में मानता है
  • dir1 निर्देशिका का मूल नाम है
  • dir2 निर्देशिका का नया नाम है

NB: dir2मौजूद नहीं है।

मुझे उम्मीद है कि यह किसी को एक noob के रूप में बहुत समय बचाता है, इससे पहले, मैं नए नाम के साथ एक निर्देशिका बनाऊंगा और फिर निर्देशिका की सामग्री को पहले बनाई गई निर्देशिका में स्थानांतरित करूंगा।

उपनिर्देशिका के लिए उपयोग करें

यह कमांड तब उपयोगी है जब लक्ष्य निर्देशिका के एक सबफ़ोल्डर में कई फ़ाइलों को सहेजा गया है Downloads/mp4। इस उदाहरण में, रनिंग के mv -T Downloads/mp4 Videosपरिणामस्वरूप mp4सबफ़ोल्डर को हटा दिया जाएगा और अंदर मौजूद सभी फ़ाइलों को वीडियो फ़ोल्डर में स्थानांतरित कर दिया जाएगा।


1
+1 क्योंकि Xubuntu 14.04 में काम किया गया। मैंने इस उत्तर में एक उदाहरण जोड़ा है जिससे पता चलता है कि यह आदेश dir1हटा दिया जाएगा। इस एहतियात के अलावा, इस जवाब में दैनिक उपयोग के लिए कुछ अच्छा है।
क्लीमकुरा

1
"किसी निर्देशिका को उसके नए नाम पर या बिना सामग्री के स्थानांतरित करने के लिए" आप एक निर्देशिका को एक नाम पर कैसे ले जा सकते हैं ...? इसका कोई अर्थ नही बन रहा है। "-T गंतव्य को एक सामान्य फ़ाइल के रूप में मानता है" गंतव्य एक फ़ाइल कैसे हो सकती है? क्या आप निर्देशिका का मतलब है?
मोनिका हेडडेक

इसकी फ़ाइल को उसके नए नाम में बदलना जैसे आप कुछ के साथ करना चाहते हैं, mv fileA fileBलेकिन -Tइस मामले में ध्वज गंतव्य / निर्देशिका को फ़ाइल के रूप में मानता है और उसका नाम बदल देता है।
फेयिसायो सोनुबी

मेरे लिए काम किया :)
नवीन कुमार V

1
  1. कमांड लाइन पर जाएं और उस निर्देशिका में पहुंचें जिसे आप इसके साथ स्थानांतरित करना चाहते हैं cd folderNamehere
  2. टाइप करें pwd। यह उस निर्देशिका को प्रिंट करेगा जिसे आप इसे स्थानांतरित करना चाहते हैं।
  3. फिर उस निर्देशिका में परिवर्तन करें जहां सभी फाइलें साथ हैं cd folderNamehere
  4. अब सभी फाइल टाइप करने के लिए mv *.* typeAnswerFromStep2here

यह उस डायरेक्टरी से दूसरी तक सभी फाइलों को स्थानांतरित कर देगा।


3
यह बिना किसी एक्सटेंशन के फाइलों से मेल नहीं खाएगा। उदाहरण के लिए एक फ़ोल्डर फ़ाइलें है यदि: foo.txt, bar.और barदोनों bar.और barनहीं ले जाया जाएगा। *इसके बजाय उपयोग करने से *.*उस पर ध्यान जाता है। लेकिन दोनों मामलों में, छिपी हुई फाइलें जैसे: .foobarस्थानांतरित नहीं की जाएंगी।
दान

1
mv source_path/* destination_path/

यहाँ आपको आगे स्लैश डालना है और *स्रोत पथ के बाद ताकि यह पूर्ण स्रोत निर्देशिका के बजाय source_path के अंदर फ़ाइलों को ले जाएगा।

उदाहरण: mv /home/username/test/* /home/username/test2/

उपरोक्त निर्देश सभी फ़ाइलों को स्थानांतरित करता है (जब तक कि वे छिपे नहीं हैं) स्रोत निर्देशिका में गंतव्य निर्देशिका में।


0

कोशिश करो

find ~/Desktop -type f -iname  "*.mp4" -exec mv {} ~/Videos \;

-प्रकार तर्क के साथ आप इस कथन -d निर्देशिका मतलब यह है कि का उपयोग कर file.if मतलब है कि file.on प्रकार निर्दिष्ट कर सकते हैं प्रकार।

-नाम: किसी फ़ाइल को देखने के लिए सबसे सामान्य और स्पष्ट तरीका इसके -नाम तर्क का उपयोग कर रहा है। यदि आप इसकी केस-संवेदनशीलता के बारे में निश्चित नहीं हैं, तो आप -in तर्क का उपयोग कर सकते हैं

mv {} और अंत में टारगेट डायरेक्टरी को निर्दिष्ट करने के लिए और फिर mv {} तर्क का उपयोग करके फ़ाइलों को वहाँ ले जाना

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