With zsh:
$ files=( *.part<->.rar(Nn) )
$ typeset -A last
$ for f ($files) last[$f:r:r]=$f
$ print -roC1 -- $last
1yBWVnZCx8CoPrGIG.part23.rar
DaHs0QJnJbt.part4.rar
n5oTzoLvG.part6.rar
okgbuh8VUxSguDNra9uMTtDlXhiLWQmY.part2.rar
RSmWMPb0vWr8LIEFtR7o.part5.rar
T7yvBIqHK82qDCNTtz9iuvp2NhQ.part11.rar
tBJDjsyJtFpY0d3aQ.part6.rar
W1Pn8SHf7pbMSf1u99C4f.part2.rar
XYcUpv7b1ZpcczFT5y7Uc9mQTvAf88kl.part2.rar
Explanations:
# Put a listing of all files that match the "glob" pattern
# ANYTHING.partANYNUMBER.rar
# into the variable called "files"
# without erroring out if nothing matches (N),
# and sorting things numerically (n)
files=( *.part<->.rar(Nn) )
# make an associative array (-A) called "last"
# (in Python, this would be called a dict,
# in C++ a std::map<std::string,std::string>)
typeset -A last
# loop over all entries in "files", and for each strip the last file name suffix
# (as separated by a "."), twice; i.e., remove the .rar, and remove the .partANYNUMBER.
# Store the file name in last[twiceshortened]
for f ($files) last[$f:r:r]=$f
# Note that this overwrites the entry for 1yBWVnZCx8CoPrGIG until the highest-
# numbered part is reached.
# Print the full list:
print -roC1 -- $last
# -r : no fancy escaping (we don't need that and it makes things strange)
# -o : print sorted, in ascending order
# -C1 : print as 1 column
# -- : the stuff to be printed follows after this
# $last : print the content (not the keys!) of the "last" associative array
# You get:
1yBWVnZCx8CoPrGIG.part23.rar
DaHs0QJnJbt.part4.rar
n5oTzoLvG.part6.rar
okgbuh8VUxSguDNra9uMTtDlXhiLWQmY.part2.rar
RSmWMPb0vWr8LIEFtR7o.part5.rar
T7yvBIqHK82qDCNTtz9iuvp2NhQ.part11.rar
tBJDjsyJtFpY0d3aQ.part6.rar
W1Pn8SHf7pbMSf1u99C4f.part2.rar
XYcUpv7b1ZpcczFT5y7Uc9mQTvAf88kl.part2.rar