In fish you could do this:
grep pat (find .)
... or this: for i in (find .)
grep pat $i
end
The first example would work correctly in fish, but AFAIK it wouldn't work in bash. The is because every line from the command substitution is automatically escaped and quoted in fish. The small drawback is that a symbol-heavy commandline sometimes needs a few extra \ escapes - the power to handle lists of lines (i.e. lines from stdin or from command substitution) is bought for a little extra escaping. And it's a good deal IMO.And the for loop in fish is so elegant and convenient that it's worth using for small random stuff.
(Everything I say is pending that I understand the find/xargs/grep example!)