मेरी समझ से, निम्नलिखित का मतलब समान होना चाहिए:
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
।