Primeiramente, precisamos prefixar /sys no caminho retornado por udev , para que o caminho se torne algo como: /sys/devices/pci0000:00/0000:00:1d.0/usb5/5-2 . Então vá para este diretório, e haverá vários arquivos nele. Entre outros, há busnum e devnum arquivos, eles contêm esses números "lógicos". Então, no script bash, podemos recuperá-los assim:
devpath='/devices/pci0000:00/0000:00:1d.0/usb5/5-2'
busnum='cat "/sys/$devpath/busnum"'
devnum='cat "/sys/$devpath/devnum"'
# we might want to make busnum and devnum have leading zeros
# (say, "003" instead of "3", and "012" instead of "12")
busnum='printf %03d $busnum'
devnum='printf %03d $devnum'
# now, we can retrieve device data by lsusb -D /dev/bus/usb/$busnum/$devnum
echo "busnum=$busnum, devnum=$devnum"
Observe também que udev pode retornar esses busnum e devnum diretamente: em RUN+="..." podemos usar as substituições $attr{busnum} e $attr{devnum} respectivamente.