Исправление teod0r, 21.12.13 10:02 (текущая версия) :
find b -type f|while read X;do find a -type f -name "$X"|while read Z;do mv b/"$X" a/"$Z";done;done
Исходная версия teod0r, 21.12.13 09:53:
find b -type f|while read X;do find a -type f -name "$X"|while read Z;do mv "$X" "$Z";done;done