/bin/ls sorts differently than just ls
In the sorted colored output
ls|sort, we can see that the last line
xyz-0.0.1-1554323568.rpm is the first line
of the non-colored output. The other lines are sorted equally.
If we have at a look at the colored escape codes (non-sorted), we can see that the first
line starts with a different escape code
^[[0m. This is causing the wrong order when sorted (
$ /bin/ls --color xyz* | cat -A ^[[0m^[[01;31mxyz-0.0.1-1554323568.rpm^[[0m$ ^[[01;31mxyz-0.0.1-1554490900.rpm^[[0m$ ^[[01;31mxyz-0.0.1-1554745305.rpm^[[0m$ ^[[01;31mxyz-0.0.1-1554751021.rpm^[[0m$ ^[[01;31mxyz-0.0.1-1555513460.rpm^[[0m$ ^[[01;31mxyz-0.0.1-1555951745.rpm^[[0m$
/bin/ls --color > file1 /bin/ls > file2
and compare content, you'll see the difference.
/bin/ls --color=auto is likely better idea, it will stop
ls from using color codes when not writing directly to terminal (like when piping to next program or writing to a file).