Eu usaria algo mais parecido com sua última abordagem, como
for d in $(find httpdocs -type d -name backup)
do ls -t $d | grep '.xml$' | head -1
done
ls -t
classifica por hora modificada, a mais recente primeiro.
Se você quiser o caminho completo na saída, você pode usar ls -t $d/*.xml
e pular o grep. Existem maneiras simples, mas não óbvias, de encurtar o nome do caminho se você desejar, como sed ou dirname.