How to find and replace on many files?

The following commands make it easy to find and replace some text in a set of files:

for fl in *.txt; do
  mv $fl $fl.old
  sed 's/find/replace/g' $fl.old > $fl
done