2016-01-09 6 views
7

मैं अपने उबंटू सर्वर में एक निर्देशिका से दूसरे निर्देशिका में 700,000 .jpg फ़ाइलों को स्थानांतरित करने की कोशिश कर रहा हूं। मैंने कोशिश की है:तर्कसंगत सूची के बिना मैं कई फ़ाइलों को कैसे स्थानांतरित कर सकता हूं?

xargs mv * -t /var/www/html/ 

और

echo (*.jpg|*.png|*.bmp) | xargs mv -t /var/www/html/ 

और

echo (*.jpg) | xargs mv -t /var/www/html/ 

और

find . -name "*.jpg" -print0 | xargs mv * ../ 

और वे सब मुझे एक ही त्रुटि दे:/usr/bin/xargs: तर्क सूची बहुत लंबी

मुझे क्या करना चाहिए? कृपया मेरी मदद करें। धन्यवाद :)

+0

संबंधित: [? करता है "तर्क सूची बहुत लंबा" प्रतिबंध builtins शैल पर लागू होते हैं] (https://stackoverflow.com/questions/47443380/does-argument-list-too -ऑन-प्रतिबंध-लागू-टू-शेल-बिल्टिन) – codeforester

उत्तर

13

यदि आप find का उपयोग करते हैं तो मैं आपको -exec विशेषता का उपयोग करने की सलाह दूंगा। तो आपका परिणाम find . -name "*.jpg" -exec mv {} /home/new/location \; होना चाहिए।

हालांकि मैं जाँच करने के लिए सिफारिश करेंगे क्या find आदेश रिटर्न आप, साथ exec भाग की जगह: -exec ls -lrt {} \;

+0

धन्यवाद यह वास्तव में मेरे लिए सही काम करता है! : डी: डी बहुत बहुत धन्यवाद !!! –

+0

@AwahHammad आपका स्वागत है! –

2

आप की कोशिश की है हो सकता है:

for f in *.jpg do; 
    mv -tv $f /var/www/html/ 
done 
for f in *.png do; 
    mv -tv $f /var/www/html/ 
done 
for f in *.bmp do; 
    mv -tv $f /var/www/html/ 
done 

भी, आप ध्यान से xargs(1) पढ़ना चाहिए; मैं दृढ़ता से संदेह है कि

find . -name "*.jpg" -print0 | xargs -n 1000 -I '{}' mv '{}' ../ 

, अंत में के लिए आप

काम करना चाहिए rename(1) बारे में अधिक जानने। यह शायद नौकरी के लिए पर्याप्त है।

+0

रास्पबेरी पीआई पर मैंने इस कमांड के साथ खेला है और यह काम करना शुरू कर दिया जब सेमिकोलन 'डू' कीवर्ड से पहले ले जाया गया था, इसलिए कमांड इस तरह दिखता था: "एफ में * .jpg के लिए; mv -f $ f/var/www/html/jpgs /; किया " –

1

प्रयास करें:

find /path/to/old-directory -type f | xargs -i mv "{}" /path/to/new-directory 
संबंधित मुद्दे

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