I'd normally ask this in comp.os.linux.misc, but my news server is not responding, so I'm asking it here. I have a bunch of files in a directory tree in which I want to replace a string A with string B. I'm trying to do this with xargs like so: grep -ri -l A . | xargs sed -e 's/A/B/g' and this does what I want, except, of course, that it outputs everything to stdout. Is there any way to pass the name of each input file as output for sed? Of course, I an do for file in `grep -ri -l A .` do cat $file | sed -e 's/A/B/g' > tmp /bin/mv tmp $file done but the xargs method seems more elegant if there was a way to specify separate output files. Suggestions? Thanks!