makefileで質問

$(src)の中身(日本語含む)
 /a/b/10ほげ/bar.txt
 /a/b/20ふーがー/piyo.txt
をこうしたい
 /a/b/10/bar.html
 /a/b/20/piyo.html

なんとか、こんな感じで書けたんですが
えらい重くなってしまいました
もし改善点とかあればアドバイスください

dst:=$(foreach i,$(src),$(shell dirname $i |xargs dirname)/$(shell dirname $i | xargs basename | cut -c1-2 -)/$(shell basename $i .txt).html)

最初これではまった(dstは空になる)。foreach構文じゃないとループ回せない
dst:=$(shell for i in $(src);do echo $i;done;)