manpagez: man pages & more
info coreutils
Home | html | info | man
[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

10.1.4 More details about version sort

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 (libc)String/Array Comparison section `String/Array Comparison' in The GNU C Library Reference Manual. 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.

© 2000-2021
Individual documents may contain additional copyright information.