Mungkin dimungkinkan untuk menggunakan sesuatu di sepanjang baris
xargs -n1 -I[] sh -c 'cat {} | grep foo > {}.foo'
atau, untuk menyingkirkan yang tidak berguna cat
xargs -n1 -I{} sh -c 'grep foo {} > ().foo'
Biasanya lebih mudah untuk meletakkannya di skrip shell sehingga Anda bisa meneruskannya file.
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
Pedantry: lstidak akan melakukan hal yang benar dengan karakter khusus, terutama baris baru yang disematkan, dalam nama file. Saya akan membuang xargsseluruhnya, dan (mengingat skrip di atas) lakukan saja
sh fiddle.sh *.txt
atau bahkan
for f in *.txt; do grep foo "$f" >"$f.txt"; done
tepat di prompt.