あ、考え違いしてた。入力ストリームを2つあける必要はないのね。おさわがせ。
for b in `cat before`; do read a; mv "$b" "$a"; done < after