2012-08-13 18 views
17

यदि मैं mv folder2/*.* folder आदेश चलाता हूं, तो मुझे "तर्क सूची बहुत लंबी" त्रुटि मिलती है।बड़ी संख्या में फाइलों को स्थानांतरित करना

मुझे ls और rm का कुछ उदाहरण मिलता है, इस त्रुटि से निपटने, find folder2 -name "*.*" का उपयोग करके। लेकिन मुझे उन्हें mv पर लागू करने में परेशानी है।

+0

यह प्रश्न पूछा और S.O. को यहां उत्तर दिया जाता है: एक और अधिक कुशल दृष्टिकोण या तो find के अंत में + का उपयोग करें या xargs है सपताहनुसार। कृपया पूछने से पहले खोजना सीखें। सौभाग्य। – shellter

+0

@shellter मुझे कुछ समान उदाहरण मिलते हैं, लेकिन जैसा कि मैंने कहा, वे सभी 'एलएस' और' आरएम' के उदाहरण हैं। – DrXCheng

+1

@shellter, यदि बहुत सारे डुप्लिक हैं, तो एक ढूंढें और बंद करने के लिए वोट दें। –

उत्तर

47
find folder2 -name '*.*' -exec mv {} folder \; 

-exec रन किसी भी कमांड, {} फ़ाइल नाम पाया सम्मिलित करता है, \; कार्यकारी आदेश की समाप्ति का सूचक।

+0

उत्तर के लिए धन्यवाद, मैं सोच रहा हूं कि एमवी कैसे चल सकता है। एमवी काम करने के लिए फ़ाइल की सीमा की सीमा क्या है। – Thunder

12

अन्य find काम का जवाब देते हैं, लेकिन बड़ी संख्या में फाइलों के लिए बहुत धीमी गति से हैं, क्योंकि वे प्रत्येक फ़ाइल के लिए एक कमांड निष्पादित करते हैं।

# Using find ... -exec + 
find folder2 -name '*.*' -exec mv --target-directory=folder '{}' + 

# Using xargs 
find folder2 -name '*.*' | xargs mv --target-directory=folder 
+0

सामान्य रूप से सहमत है, लेकिन यदि एक सीधी 'एमवी' एक "तर्क सूची बहुत लंबी" त्रुटि उत्पन्न करती है, तो मुझे संदेह है कि 'ढूंढ' का उपयोग करके लंबे समय तक बनाया गया एक काम करेगा। –

+1

मुझे यकीन नहीं है कि मैं अनुसरण करता हूं। 'ढूंढ' के अंत में '+' का पूरा बिंदु यही है। यदि आप इसका उपयोग करते हैं, तो 'ढूंढें' बिल्कुल 'ढूंढें' के रूप में व्यवहार करता है xargs 'संयोजन। – Idelic

+0

ओपी ने सभी फाइलों को एक बार में स्थानांतरित करने का प्रयास करते समय खोल दिया। वास्तव में चाल करने के लिए 'खोज' और 'xargs' दोनों एक ही शेल कमांड चलाते हैं, इसलिए उन्हें भी त्रुटि हो सकती है। यही कारण है कि मैंने एक-बार-बार विधि का सुझाव दिया, भले ही यह धीमा हो। –

संबंधित मुद्दे