coreutils: Using version sort in GNU Coreutils
30.1.1 Using version sort in GNU Coreutils
------------------------------------------
Two GNU Coreutils programs use version sort: ‘ls’ and ‘sort’.
To list files in version sort order, use ‘ls’ with the ‘-v’ or
‘--sort=version’ option:
default sort: version sort:
$ ls -1 $ ls -1 -v
a1 a1
a100 a1.4
a1.13 a1.13
a1.4 a1.40
a1.40 a2
a2 a100
To sort text files in version sort order, use ‘sort’ with the ‘-V’ or
‘--version-sort’ option:
$ cat input
b3
b11
b1
b20
lexicographic order: version sort order:
$ sort input $ sort -V input
b1 b1
b11 b3
b20 b11
b3 b20
To sort a specific field in a file, use ‘-k/--key’ with ‘V’ type
sorting, which is often combined with ‘b’ to ignore leading blanks in
the field:
$ cat input2
100 b3 apples
2000 b11 oranges
3000 b1 potatoes
4000 b20 bananas
$ sort -k 2bV,2 input2
3000 b1 potatoes
100 b3 apples
2000 b11 oranges
4000 b20 bananas