2011-10-13 8 views
5

मैं लूप के निर्माण के बिना फ़ाइल ग्लोबिंग के प्रत्येक परिणाम के लिए वर्तमान कमांड निष्पादित करने के लिए दूर की तलाश कर रहा हूं। मैंने इसे कहीं देखा लेकिन बिल्कुल याद नहीं किया जा सकता है।क्या मैं zsh में फ़ाइल globbing के प्रत्येक परिणाम के लिए आदेश निष्पादित कर सकता हूं?

(गूंज सिर्फ एक उदाहरण है, यह भी उदाहरण के लिए psql साथ काम करना चाहिए)

उदाहरण:

$ touch aaa bbb ccc ddd 
$ echo "--- " [a-c]* 
--- aaa bbb ccc 

वांछित उत्पादन:

--- aaa 
--- bbb 
--- ccc 

kown रास्ता:

$ for i in [a-c]*; do echo "--- " $i ; done 
--- aaa 
--- bbb 
--- ccc 

Cou एलडी के लिए इस्तेमाल किया जा रहा है। लेकिन शायद इसे कम करने का कोई तरीका है? शायद ग्लोब के चारों ओर डबल घुंघराले ब्रेसिज़ का उपयोग करना या जो भी हो?

धन्यवाद। :)

उत्तर

4

आप zargs के लिए देख रहे हैं, एक ही उद्देश्य के साथ xargs लेकिन एक सैंटर इंटरफ़ेस के साथ एक आदेश।

autoload -U zargs 
zargs -n 1 -- * -- mycommand 
+0

धन्यवाद, "सीन" दिखता है :) –

2

printf आदेश परोक्ष पाश अगर प्रारूप स्ट्रिंग में प्लेसहोल्डर की तुलना में अधिक तर्क दिया जाएगा:

printf -- "--- %s\n" [a-c]* 

प्रत्येक फ़ाइल पर एक आदेश पर अमल करने के लिए, आप xargs की जरूरत है: मुझे लगता है आप जीएनयू xargs है कि है -0 विकल्प:

printf "%s\0" [a-c]* | xargs -0 -I FILE echo aa FILE bb 

, बदलें आप जो कुछ भी जरूरत के साथ echo xargs कमान "फ़ाइल" प्लेसहोल्डर जहां फ़ाइल नाम की जरूरत है का उपयोग कर।

यह निर्धारित करने के लिए अपने स्वयं के फैसले का प्रयोग करें कि यह वास्तव में एक लूप की तुलना में बेहतर या अधिक रखरखाव योग्य है या नहीं।

+0

ओह, अच्छा एक धन्यवाद। लेकिन वास्तव में गूंज सिर्फ एक उदाहरण था। मैं जिस वास्तविक आदेश को जारी करना चाहता हूं वह है "psql ... -f $ i" :-) –

+0

@dedeibel, उत्तर अपडेट किया गया। –

+0

अद्यतन के लिए धन्यवाद, zsh विशिष्ट नहीं है लेकिन यह अच्छा है। –

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