Este é um código não testado! A ideia aqui é dar a lógica que eu acho que você deveria seguir. Isso não inclui subdiretórios, mas pelo menos não criará muitos arquivos vazios como seu código de amostra e terá alguma correção de sintaxe.
O loop for pode ser melhorado com algo como um grep ou uma instrução find para incluir subdiretórios, mas levaria algum tempo para descobrir isso. Talvez alguém saiba do topo de sua cabeça?
mkdir -p _seded
TMPFILE=/var/tmp/sedtmp$$$ # Someone can help me with the syntax for a unique file here.
for file in *_spec.rb
do
cat $file
... a bunch of seds >> $TMPFILE # Each with this addition after it.
COUNT='wc -l $TMPFILE'
if [ COUNT -gt 0 ]
then
cp $TMPFILE _seded/$file
fi
> $TMPFILE
done
rm $TMPFILE