Next: General output formatting, Previous: Sorting the output, Up: ls invocation
The version sort takes into account the fact that file names frequently include indices or version numbers. Standard sorting functions usually do not produce the ordering that people expect because comparisons are made on a character-by-character basis. The version sort addresses this problem, and is especially useful when browsing directories that contain many files with indices/version numbers in their names:
$ ls -1 $ ls -1v
foo.zml-1.gz foo.zml-1.gz
foo.zml-100.gz foo.zml-2.gz
foo.zml-12.gz foo.zml-6.gz
foo.zml-13.gz foo.zml-12.gz
foo.zml-2.gz foo.zml-13.gz
foo.zml-25.gz foo.zml-25.gz
foo.zml-6.gz foo.zml-100.gz
Note also that numeric parts with leading zeros are considered as fractional one:
$ ls -1 $ ls -1v
abc-1.007.tgz abc-1.007.tgz
abc-1.012b.tgz abc-1.01a.tgz
abc-1.01a.tgz abc-1.012b.tgz
This functionality is implemented using the strverscmp function.
See String/Array Comparison.
One result of that implementation decision is that ls -v does not
use the locale category, LC_COLLATE. As a result, non-numeric prefixes
are sorted as if LC_COLLATE were set to C.