Probably slower than the go version, but more flexible since you have more over the files processed.
# bash
# find/replace
function fr {
local pattern=$1
local replacement=$2
local program
if [[ -z "$replacement" ]]
then
program="grep $pattern"
else
program="sed -i s/$pattern/$replacement/g"
fi
while read line
do
$program "$line"
done
}
# usage
find . | fr find-this
find . | fr replace-this with-that
Well, one can write an one-line shell alias (or script) instead of reinventing the wheel by rewriting the whole thing anew in Go. (Which is certainly good as learning experience for Go, but the end result is easier to achieve with the shell)
A C wrapper around `sed -e "s/what-is-it/here-you-go/" would be a little more efficient, and a lot simpler. Reinventing the wheel is bad for X+Y+Z reasons, where X, Y and Z are the bugs, options, and features in the last wheel.