Can you mass edit all files returned in a grep?

I want to mass-edit a ton of files that are returned in a grep. (I know, I should get better at sed).

So if I do:

grep -rnI 'xg_icon-*'

How do I pipe all of those files into vi?


The easiest way is to have grep return just the filenames (-l instead of -n) that match the pattern. Run that in a subshell and feed the results to Vim.

vim $(grep -rIl 'xg_icon-*' *)

A nice general solution to this is to use xargs to convert a stdout from a process like grep to an argument list.

A la:

grep -rIl 'xg_icon-*' | xargs vi