किसी विशिष्ट गंतव्य निर्देशिका में एक साथ कई फ़ाइलों को स्थानांतरित करने के लिए कैसे?


152

मुझे कुछ निर्देशिका में (कई अन्य फ़ाइलों के साथ) फ़ाइलों का एक गुच्छा मिला है जिसे मैं स्थानांतरित करना चाहता हूं।

सौभाग्य से, जिन फ़ाइलों को मैं स्थानांतरित करना चाहता हूं, उनके नामों में एक निश्चित पहचानकर्ता शामिल है, इसलिए मैं ls | grep IDENTIFIERस्थानांतरित करने के लिए फ़ाइलों की सटीक सूची प्राप्त कर सकता हूं ।

लेकिन, मैं mv file /path/to/dest/folder/एक बार में कैसे निष्पादित कर सकता हूं , और एक-एक करके नहीं (स्थानांतरित करने के लिए बहुत सारी फाइलें हैं)?

जवाबों:


100

यदि आप स्थानांतरित करना चाहते हैं ABC-IDENTIFIER-XYZ.extया IDENTIFIER-XYZ.xml, आप उपयोग कर सकते हैं:

mv *IDENTIFIER* ~/YourPath/

*शून्य या अधिक वर्णों का वाइल्डकार्ड है , इसका अर्थ है शून्य या अधिक वर्ण , इसके IDENTIFIERबाद शून्य या अधिक वर्ण

यह सभी फ़ाइलें चले जाएँगे शामिलIDENTIFIER आपके द्वारा निर्दिष्ट।


201

आप उपयोग कर सकते हैं

mv -t DESTINATION file1 file2 file3

तथा

mv -t DESTINATION `ls|grep IDENTIFIER`

काम करता है, लेकिन मुझे यकीन नहीं है कि अगर mv को कई बार लागू किया जाता है या नहीं, क्योंकि grep प्रत्येक मैच के लिए एक नई लाइन का उत्पादन करेगा।


5
लिनक्स पर काम करता है, यकीन नहीं अगर यह मैक पर काम करेगा
अलेक्जेंडर मिल्स

3
मैक पर काम करता है और विंडवॉश के लिए गिट के माध्यम से गिट मारता है।
ब्रैंडट सोलोविज

11
Mac (10.11.16 El Capitan) पर काम नहीं करता है। लेकिन आप बस लक्ष्य फ़ोल्डर को पीछे से रख सकते हैं, अर्थातmv file1 file2 ... destination
शेलजॉन

2
-1 दूसरे दृष्टिकोण के लिए क्योंकि यह नई लाइनों
αнsнι


24

आप वाइल्डकार्ड का उपयोग कर सकते हैं ।

उदाहरण: एक्सटेंशन .doc वाले सभी फ़ाइलों को स्थानांतरित करने के लिए

mv *.doc /path/to/dest/folder/

यह वर्तमान निर्देशिका के अंतर्गत सभी डॉक फ़ाइल को विशिष्ट गंतव्य पर ले जाएगा।

संपादित करें

टिप्पणी का जवाब देने के लिए।

mv *.ext *.xml *.txt /path/to/dest/folder/


2
लेकिन स्थानांतरित करने के लिए फ़ाइलों की सूची विस्तार द्वारा निर्धारित नहीं की जाती है। कुछ फ़ाइलों के नाम दिए गए हैं: ABC-IDENTIFIER-XYZ.extऔर कुछ में IDENTIFIER-XYZ.extसभी अलग-अलग एक्सटेंशन हैं, ज्यादातर xmlया properties
गिलाद होच

@giladhoch कैसे संपादित एक के बारे में?
अचु

@ gliadhoch यदि आप grep का उपयोग करने में बहुत सहज हैं, तो आप मेरा उत्तर ऊपर / नीचे देख सकते हैं।
प्रज्वलित करें

अन्य .xmlफ़ाइलों (उदाहरण के लिए) के बाद से मैं काम नहीं करना चाहूंगा।
गिलाद होच

20

यदि आप अप्रासंगिक फ़ाइलों के एक सेट को स्थानांतरित करना चाहते हैं (नाम और प्रकारों में कोई सामान्य पैटर्न नहीं) तो आप ऐसा कर सकते हैं जैसा कि श्री राजनंद ने कहा: पहले उस निर्देशिका में जाएं जिसमें वे फ़ाइलें हैं जिन्हें आप स्थानांतरित करना चाहते हैं

mv file1.ext1 file2.ext2 file3.ext3.. /destination/

यदि फाइलें अलग-अलग निर्देशिकाओं में बिखरी हुई हैं, तो आपको केवल कदम कमांड में प्रत्येक फ़ाइल के लिए पथ निर्दिष्ट करने की आवश्यकता है


10

मैं tuomaz की तकनीक का उपयोग करता हूं, लेकिन थोड़ा संशोधित:

mv file1 file2 file3 -t DESTINATION

मुझे यह याद रखना आसान है और कठिन है क्योंकि यह वैनिला mv ऑपरेशन के समान ऑर्डर का उपयोग करता है:

mv file1 DESTINATION

mvएक -tविकल्प का उल्लेख नहीं करने के लिए मैन पेज ।
नूमेनन

2
linux.die.net/man/1/mv हां यह करता है
जियोयर्स

7

इस कमांड का उपयोग करें:

mv `ls|grep IDENTIFIER` /path/to/dest/folder  

हालांकि, इस तरह के उपयोग के लिए एलएस की सिफारिश नहीं की जाती है। इसके बजाय आदेश खोजें का उपयोग करें ।


8
lsइस तरह के उपयोग के लिए अनुशंसित नहीं है। यदि आप फ़ाइलों को सूचीबद्ध करना चाहते हैं, विशेष रूप से एक grepपीछे के साथ , का उपयोग करें find . -name \*IDENTIFIER\*
नॉरटिक यू

यह उत्तर सिर्फ यह प्रदर्शित करने के लिए था कि आप mv में पिछले कमांड के आउटपुट का उपयोग कैसे कर सकते हैं। जैसा कि ls | grep प्रश्न में उल्लेख किया गया था, मैंने अभी इसकी प्रतिलिपि बनाई है।
प्रज्वलित करें

3
जैसा कि @NorTicUs द्वारा कहा गया है, ls के उपयोग की सलाह दी जाती है। इसके अलावा, रिक्त स्थान वाली फाइलें समस्या का कारण बन सकती हैं।
धान लैंडौ


5

यदि आपके पास स्थानांतरित करने के लिए बहुत सारी फाइलें हैं, तो आप वास्तव में mvकमांड (या अन्य कमांड जैसे rm) के लिए बहुत अधिक हो सकते हैं । मैं सुझाव देता हूं कि xargsप्रत्येक फाइल को फैशन जैसे लूप में व्यक्तिगत रूप से स्थानांतरित करें। ऐसा करने का एक तरीका है:

ls -1 | grep IDENTIFIER | xargs -i mv {} /path/to/dest/folder/

ls -1(ऋण एक) सुनिश्चित करता है प्रत्येक पंक्ति पर केवल एक ही फ़ाइल नाम नहीं है। यदि आपके पास lsकमांड के लिए उपनाम छिपा है, तो आपके पास एक ही लाइन पर कई फ़ाइल नाम हो सकते हैं और अनजाने में एक फ़ाइल ले जा सकते हैं जिसे आपने स्थानांतरित करने का इरादा नहीं किया था।


यह तब भी उपयोगी होता है जब आपका IDENTIFIER आसानी से वाइल्डकार्ड में बदल नहीं जाता है, या आप अधिक जटिल रीगेक्स के साथ grep का उपयोग करना चाहते हैं।
एग्गीबिल

1
Xargs के लिए +1। खोज लगभग हमेशा बेहतर है और ls की तुलना में अधिक सुरक्षित है। खोजो। IDENTIFIER -exec mv {} / path / to / dest / folder \; (अनकहा कोड) वर्तमान कार्य निर्देशिका के लिए है। द \ _; निष्पादित होने वाली कमांड को समाप्त करना है। आप जो कर रहे हैं, उसके आधार पर, आपको उपनिर्देशिकाओं में पुनरावृत्ति से बचाने के लिए एक -maxdepth 1 जोड़ना होगा।
जो

5

यदि फ़ाइलें उसी dir में हैं तो आप उपयोग कर सकते हैं

mv /path/to/source/dir/{file1,file2,*.ext1,*.ext2} /path/to/destination/

(उबंटू में परीक्षण 16.04)


1
यह वास्तव में मौजूदा उत्तरों में कुछ नहीं जोड़ता है, क्या आपको नहीं लगता है?
डेसर्ट

1
बस प्रत्येक फ़ाइल के लिए पूर्ण पथ निर्दिष्ट करने की आवश्यकता को समाप्त करता है
Sruli

3
find -type f -name "[range]" -exec mv {} target-directory ';'

यह कमांड किसी भी पैटर्न / रेंज के साथ फाइल नामों को लक्ष्य-निर्देशिका में ले जाएगा।

जैसे।

find -type f -name "file[1-50000]" -exec mv {} target-directory ';'

यह फ़ाइलों को नामों की तरह ले जाएगा file1, file2... file50000को target-directory


2

आप आउटपुट से लेकर ls से इनपुट तक mv कॉमनड का उपयोग कर सकते हैं

mv $(ls | grep IDENTIFIER) /path/to/dest/dir

$()आपकी खोज से मेल खाते फ़ाइल नामों की सूची के बीच कमांड , और जो mv कमांड के लिए एक पैरामीटर के रूप में प्रदान किया जा सकता है।



1

इस कमांड का उपयोग करके आप कई फाइल को स्थानांतरित कर सकते हैं।

mv SourceFilenames ~DestinationPath


1

सबसे आसान तरीका इस तरह है

mv {file1,file2,file3} DESTINATION

या निर्देशिका

mv {directory1,directory2,directory3} DESTINATION

या दोनों फाइलें और निर्देशिका

mv {file1,file2,file3,directory1,directory2,directory3} DESTINATION

उम्मीद है की यह मदद करेगा

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