grep sempre exibirá o nome do arquivo contendo a correspondência se mais de um arquivo for fornecido na linha de comando. Se você passar apenas um arquivo, nenhum nome de arquivo será impresso.
Para forçar sempre a impressão do nome do arquivo junto com a correspondência real, adicione /dev/null como um arquivo extra para o grep:
find /tmp -type f -name '*.xml' -exec grep -o -P '(?<=<Name>).*(?=</Name>)' {} /dev/null \;
Ou, para potencialmente menos invocações de grep , use find -exec grep ... {} + :
find /tmp -type f -name '*.xml' -exec grep -o -P '(?<=<Name>).*(?=</Name>)' /dev/null {} +
Pelo menos o GNU grep , bem como grep no OpenBSD e no FreeBSD também suportam o -H flag para sempre imprimir o nome do arquivo, mesmo se apenas um arquivo for dado. Como você usou grep -P , provavelmente está usando o GNU grep de qualquer maneira.