Find and replace with grep and perl
There are two minor issues:  First, to pipe file names to a perl one-liner in this way, you need to use the xargs command.  

Second, you will need to pass the full path to the perl one-liner, because it might be in a subdir, so it would be better to use find.

Here's a working command:

find . -name "*.txt" | xargs perl -i -p -e 's/one.a/two.a/g'