lsof
são bastante restritivas, pois insistem em prefixar cada campo com uma letra designando o significado desse campo. Por exemplo,
$ sudo lsof -U -a -p 30661 -Fn
daria
p30661
n/var/lib/haproxy/stats.30660.tmp
A página man diz que o ID do processo é sempre selecionado, então não parece haver uma maneira de obter apenas o nome do arquivo (do qual pode haver mais de um). Eu quero lhe dar mais opções, mas você disse que não quer usar canos ou outros comandos.