Você precisa classificar pelo último campo (considerando / como um separador de campo). Infelizmente, não consigo pensar em uma ferramenta que possa fazer isso quando o número de campos varia (se apenas sort -k puder receber valores negativos).
Para contornar isso, você terá que fazer uma decorar-classificar-undecorate. Ou seja, pegue o nome do arquivo e coloque-o no início, seguido por um separador de campo, faça uma classificação e remova a primeira coluna e o separador de campo.
find . ! -path "./build*" -name "*.txt" |\
awk -vFS=/ -vOFS=/ '{ print $NF,$0 }' |\
sort -n -t / |\
cut -f2- -d/
Esse comando awk diz que o separador de campos FS está definido como / ; isso afeta a maneira como lê os campos. O separador de campos de saída OFS também é definido como / ; isso afeta a maneira como imprime registros. A próxima instrução diz imprimir a última coluna ( NF é o número de campos no registro, portanto, também é o índice do último campo), bem como todo o registro ( $0 é o registro inteiro); ele irá imprimi-los com o OFS entre eles. Então a lista é sort ed, tratando / como o separador de campos - já que temos o nome do arquivo primeiro no registro, ele irá classificar por isso. Em seguida, o cut imprime somente os campos 2 até o final, tratando novamente / como o separador de campo.