जब मैं निम्नलिखित कमांड चलाता हूं:
> mkdir some_dir
> find /foo/bar/ -name '*.csv' -print0 | xargs -0 mv {} some_dir
मुझे सैकड़ों लाइनें मिलती हैं जो कहती हैं:
mv: target `/foo/bar/XX.csv` is not a directory
क्यों? मुझे लगा कि xargs निष्पादित करेगा:
mv /foo/barXX.csv some_dir
हर फ़ाइल के लिए जो find
पाता है। क्या चल रहा है? वैसे, यह zsh के साथ है
अपडेट करें:
Update1:
मैंने कोशिश की:
find /foo/bar/ -name '*.csv' -print0 | xargs -0 mv {} -t some_dir
लेकिन फिर मुझे कुछ लाइनें मिलीं:
mv: cannot stat `{}': No such file or directory
हालाँकि मुझे लगता है कि कमांड मेरी फाइलों को सही ढंग से चला रहा है।
Update2:
मैं अकेले -t
उपयोग करते समय विकल्प की जरूरत नहीं लगती mv
। उदाहरण के लिए
> touch file1.txt
> touch file2.txt
> mkdir my_dir
> mv file1.txt file2.txt my_dir
अच्छा काम करता है। -t
उपयोग करते समय मुझे आवश्यकता क्यों है xargs
?