की तर्ज पर कुछ का उपयोग करना संभव हो सकता है
xargs -n1 -I[] sh -c 'cat {} | grep foo > {}.foo'
या, बेकार से छुटकारा पाने के लिए cat
xargs -n1 -I{} sh -c 'grep foo {} > ().foo'
आमतौर पर इसे शेल स्क्रिप्ट में रखना आसान होता है ताकि आप इसे फाइल पास कर सकें।
cat > fiddle.sh <<\EOF
for f in "$@"; do
grep foo "$f" >"$f.foo"
done
EOF
ls *.txt | xargs sh fiddle.sh # note we can now pass multiple files, no -n1 or -I needed
पैदल सेना: ls
विशेष वर्णों के साथ सही काम नहीं करेगी, विशेष रूप से नए नाम, फिल्नाम में एम्बेडेड। मैं xargs
पूरी तरह से डंप करूँगा , और (उपरोक्त स्क्रिप्ट को देखते हुए) बस करो
sh fiddle.sh *.txt
या और भी
for f in *.txt; do grep foo "$f" >"$f.txt"; done
प्रॉम्प्ट पर सही।