एमवी फाइलें साथ | xargs


18

मैं सिर्फ अपने / etc / apache / साइटों-सक्षम फ़ोल्डर से / etc / apache / साइटों-उपलब्ध फ़ोल्डर में से निम्न के साथ फ़ाइलों का एक गुच्छा (सिम्लिंक नहीं) स्थानांतरित करने का प्रयास कर रहा हूं:

/etc/apache2/sites-enabled$ find . -maxdepth 1 -type f | xargs mv {} ../sites-available/

लेकिन मैं एक ubuntu n00b हूँ और मुझे यह त्रुटि मिल रही है:

mv: target `./real-file' is not a directory

जहाँ 'वास्तविक फ़ाइल' एक परीक्षण फ़ाइल है जिसे मैंने अपने देव परिवेश पर स्थापित किया है। मैं एक उत्पादन सर्वर पर किसी और की गंदगी को साफ करने की कोशिश कर रहा हूँ ;-)

जवाबों:


27

आप आदेश के -execसाथ विकल्प की कोशिश कर सकते हैं find,

/etc/apache2/sites-enabled$ sudo find . -maxdepth 1 -type f -exec mv {} /etc/apache2/sites-available \;

रूट के स्वामित्व वाली फ़ाइलों को स्थानांतरित करने के लिए, आपको sudoअनुमतियों की आवश्यकता है।

यदि आप xargsकमांड का उपयोग करना चाहते हैं तो -Iइसमें विकल्प जोड़ें ।

find . -maxdepth 1 -type f | sudo xargs -I {} mv {} /etc/apache2/sites-available/

7

आदर्श रूप से आपको -प्रिंट0 का उपयोग ढूंढना चाहिए, इसलिए रिक्त स्थान वाले फ़ाइलनाम चीजों को पेंच नहीं करते हैं।

जैसे यह काम करना चाहिए:

find . -whatever-flags-go-here -print0 | xargs -r0 mv -t target-directory

0

आप एक ही प्रदर्शन करने के लिए एक और तरीका भी उपयोग कर सकते हैं लेकिन एक अतिरिक्त प्रदर्शन के साथ :

find . -maxdepth 1 -type f -exec mv {} /etc/apache2/sites-available \+

ध्यान दें कि यह समाप्त होता है \+जिसका अर्थ है कि कमांड प्राप्त करने के लिए आउटपुट प्राप्त करना और {}जो आप चाहते हैं उसमें विस्तार करना, इस तरह आप दो विकल्पों से बचते हैं ( \;प्रत्येक प्रविष्टि के लिए और नए कमांड में पाइपिंग xargs)

यहाँ स्पष्टीकरण है (आप मैनुअल भी जांच सकते हैं man find)

-exec कमांड {} + -exec कार्रवाई का यह संस्करण चयनित फ़ाइलों पर निर्दिष्ट कमांड चलाता है, लेकिन कमांड लाइन अंत में प्रत्येक चयनित फ़ाइल नाम को जोड़कर बनाया गया है; कमांड की कुल संख्याओं की संख्या मिलान की गई फ़ाइलों की संख्या से बहुत कम होगी। कमांड लाइन उसी तरह से बनाई गई है जिस तरह से xargs अपनी कमांड लाइन बनाता है। कमांड के भीतर '{}' के केवल एक उदाहरण की अनुमति है। कमांड को प्रारंभिक निर्देशिका में निष्पादित किया जाता है।

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