मेरी समझ से, निम्नलिखित का मतलब समान होना चाहिए:
ls -1 | xargs file {}
ls -1 | xargs -I{} file {}
अगर -I विकल्प निर्दिष्ट नहीं है, तो यह डिफ़ॉल्ट है -I {}।
मैं वर्तमान निर्देशिका की सभी फाइलों को सूचीबद्ध करना चाहता हूं और fileउनमें से प्रत्येक पर कमांड चलाना चाहता हूं। कुछ के नाम में जगह है। हालांकि, मैंने अंतर पर ध्यान दिया। निचे देखो:
$ ls -1
Hello World
$ ls -1 | xargs file {}
{}: ERROR: cannot open `{}' (No such file or directory)
Hello: ERROR: cannot open `Hello' (No such file or directory)
World: ERROR: cannot open `World' (No such file or directory)
$ ls -1 | xargs -I{} file {}
Hello World: directory
-I {} के साथ स्पष्ट रूप से निर्दिष्ट, फ़ाइल नामों में रिक्त अपेक्षा के अनुरूप व्यवहार किया जाता है।
xargs fileया xargs -I{} file {}। नहीं होना चाहिए xargs file {}। मुझे लगता है कि जब मैं स्पष्ट रूप से निर्दिष्ट कर रहा हूँ -I {}, बैश के रूप में इलाज करेंगे file "Hello World"। बिना -I {}, इसे माना जाता है file Hello World।
-1विकल्प जानते हैं ls, लेकिन यह डिफ़ॉल्ट रूप से तब होता है जब lsकोई फ़ाइल या पाइप का आउटपुट होता है, इसलिए आपको इसकी आवश्यकता नहीं है। (3) आप -Iपदावनत -i(निचले मामले I) विकल्प के साथ भ्रमित कर रहे हैं । -ifooके बराबर है -Ifoo, लेकिन सादे -iके बराबर है -I{}। लेकिन उपयोग करें -I{}। (४) यदि आप वास्तव में वही करना चाहते हैं जो आप कहते हैं कि आप करना चाहते हैं, तो बस क्यों नहीं file *?
fileउन पर चलाने के लिए। लेकिन मैं एक सरल उदाहरण का उपयोग करके आया था ls। तुम सही हो। उसके लिए, file *सबसे अच्छा है।
-exec।