Public bug reported:
After updating to Ubuntu 26.04, I've noticed that `ls` doesn't sort
filenames correctly when the `--group-directories-first` option is
specified. First the system info.
----- <SNIP> -----
$ lsb_release -rd
Description: Ubuntu 26.04 LTS
Release: 26.04
$ ls --version
ls (uutils coreutils) 0.8.0
$ dpkg -S $(which ls)
coreutils-from-uutils: /usr/bin/ls
$ dpkg -l \*coreutils\* | grep ^ii
ii coreutils 9.5-1ubuntu2+0.0.0~ubuntu25 all coreutils
meta package
ii coreutils-from-uutils 0.0.0~ubuntu25 all coreutils
from the uutils project
ii gnu-coreutils 9.7-3ubuntu2 amd64 GNU core
utilities
ii rust-coreutils 0.8.0-0ubuntu3 amd64 Universal
coreutils utils, written in Rust
$ env | grep -E 'LANG|LC'
LANG=en_US.UTF-8
----- </SNIP> -----
Now create a test directory with a mix of files and directories.
----- <SNIP> -----
$ mkdir /tmp/ls_test
$ cd /tmp/ls_test
$ for i in {a..z}; do
> if [[ $i =~ ^[cgjnquy]$ ]]; then
> mkdir $i
> else
> date > $i
> fi
> done
----- </SNIP> -----
Onto the actual test.
----- <SNIP> -----
$ ls -l # ungrouped results for comparison
total 76
-rw-r----- 1 adric adric 32 Jun 3 09:29 a
-rw-r----- 1 adric adric 32 Jun 3 09:29 b
drwxr-x--- 2 adric adric 40 Jun 3 09:29 c
-rw-r----- 1 adric adric 32 Jun 3 09:29 d
-rw-r----- 1 adric adric 32 Jun 3 09:29 e
-rw-r----- 1 adric adric 32 Jun 3 09:29 f
drwxr-x--- 2 adric adric 40 Jun 3 09:29 g
-rw-r----- 1 adric adric 32 Jun 3 09:29 h
-rw-r----- 1 adric adric 32 Jun 3 09:29 i
drwxr-x--- 2 adric adric 40 Jun 3 09:29 j
-rw-r----- 1 adric adric 32 Jun 3 09:29 k
-rw-r----- 1 adric adric 32 Jun 3 09:29 l
-rw-r----- 1 adric adric 32 Jun 3 09:29 m
drwxr-x--- 2 adric adric 40 Jun 3 09:29 n
-rw-r----- 1 adric adric 32 Jun 3 09:29 o
-rw-r----- 1 adric adric 32 Jun 3 09:29 p
drwxr-x--- 2 adric adric 40 Jun 3 09:29 q
-rw-r----- 1 adric adric 32 Jun 3 09:29 r
-rw-r----- 1 adric adric 32 Jun 3 09:29 s
-rw-r----- 1 adric adric 32 Jun 3 09:29 t
drwxr-x--- 2 adric adric 40 Jun 3 09:29 u
-rw-r----- 1 adric adric 32 Jun 3 09:29 v
-rw-r----- 1 adric adric 32 Jun 3 09:29 w
-rw-r----- 1 adric adric 32 Jun 3 09:29 x
drwxr-x--- 2 adric adric 40 Jun 3 09:29 y
-rw-r----- 1 adric adric 32 Jun 3 09:29 z
$ ls -l --group-directories-first # filenames are no longer sorted
total 76
drwxr-x--- 2 adric adric 40 Jun 3 09:29 j
drwxr-x--- 2 adric adric 40 Jun 3 09:29 y
drwxr-x--- 2 adric adric 40 Jun 3 09:29 c
drwxr-x--- 2 adric adric 40 Jun 3 09:29 u
drwxr-x--- 2 adric adric 40 Jun 3 09:29 q
drwxr-x--- 2 adric adric 40 Jun 3 09:29 n
drwxr-x--- 2 adric adric 40 Jun 3 09:29 g
-rw-r----- 1 adric adric 32 Jun 3 09:29 m
-rw-r----- 1 adric adric 32 Jun 3 09:29 z
-rw-r----- 1 adric adric 32 Jun 3 09:29 b
-rw-r----- 1 adric adric 32 Jun 3 09:29 k
-rw-r----- 1 adric adric 32 Jun 3 09:29 l
-rw-r----- 1 adric adric 32 Jun 3 09:29 a
-rw-r----- 1 adric adric 32 Jun 3 09:29 h
-rw-r----- 1 adric adric 32 Jun 3 09:29 o
-rw-r----- 1 adric adric 32 Jun 3 09:29 p
-rw-r----- 1 adric adric 32 Jun 3 09:29 i
-rw-r----- 1 adric adric 32 Jun 3 09:29 r
-rw-r----- 1 adric adric 32 Jun 3 09:29 s
-rw-r----- 1 adric adric 32 Jun 3 09:29 t
-rw-r----- 1 adric adric 32 Jun 3 09:29 e
-rw-r----- 1 adric adric 32 Jun 3 09:29 v
-rw-r----- 1 adric adric 32 Jun 3 09:29 w
-rw-r----- 1 adric adric 32 Jun 3 09:29 x
-rw-r----- 1 adric adric 32 Jun 3 09:29 d
-rw-r----- 1 adric adric 32 Jun 3 09:29 f
$ ls -l --group-directories-first --sort=name # specify an explicit sort
(allowed per the manpage)
total 76
drwxr-x--- 2 adric adric 40 Jun 3 09:29 j
drwxr-x--- 2 adric adric 40 Jun 3 09:29 y
drwxr-x--- 2 adric adric 40 Jun 3 09:29 c
drwxr-x--- 2 adric adric 40 Jun 3 09:29 u
drwxr-x--- 2 adric adric 40 Jun 3 09:29 q
drwxr-x--- 2 adric adric 40 Jun 3 09:29 n
drwxr-x--- 2 adric adric 40 Jun 3 09:29 g
-rw-r----- 1 adric adric 32 Jun 3 09:29 m
-rw-r----- 1 adric adric 32 Jun 3 09:29 z
-rw-r----- 1 adric adric 32 Jun 3 09:29 b
-rw-r----- 1 adric adric 32 Jun 3 09:29 k
-rw-r----- 1 adric adric 32 Jun 3 09:29 l
-rw-r----- 1 adric adric 32 Jun 3 09:29 a
-rw-r----- 1 adric adric 32 Jun 3 09:29 h
-rw-r----- 1 adric adric 32 Jun 3 09:29 o
-rw-r----- 1 adric adric 32 Jun 3 09:29 p
-rw-r----- 1 adric adric 32 Jun 3 09:29 i
-rw-r----- 1 adric adric 32 Jun 3 09:29 r
-rw-r----- 1 adric adric 32 Jun 3 09:29 s
-rw-r----- 1 adric adric 32 Jun 3 09:29 t
-rw-r----- 1 adric adric 32 Jun 3 09:29 e
-rw-r----- 1 adric adric 32 Jun 3 09:29 v
-rw-r----- 1 adric adric 32 Jun 3 09:29 w
-rw-r----- 1 adric adric 32 Jun 3 09:29 x
-rw-r----- 1 adric adric 32 Jun 3 09:29 d
-rw-r----- 1 adric adric 32 Jun 3 09:29 f
----- </SNIP> -----
Repeat the above using `LANG=C`, just to rule out issue being related to
`LANG=en_US.UTF-8`.
----- <SNIP> -----
$ LANG=C ls -l
total 76
-rw-r----- 1 adric adric 32 Jun 3 09:29 a
-rw-r----- 1 adric adric 32 Jun 3 09:29 b
drwxr-x--- 2 adric adric 40 Jun 3 09:29 c
-rw-r----- 1 adric adric 32 Jun 3 09:29 d
-rw-r----- 1 adric adric 32 Jun 3 09:29 e
-rw-r----- 1 adric adric 32 Jun 3 09:29 f
drwxr-x--- 2 adric adric 40 Jun 3 09:29 g
-rw-r----- 1 adric adric 32 Jun 3 09:29 h
-rw-r----- 1 adric adric 32 Jun 3 09:29 i
drwxr-x--- 2 adric adric 40 Jun 3 09:29 j
-rw-r----- 1 adric adric 32 Jun 3 09:29 k
-rw-r----- 1 adric adric 32 Jun 3 09:29 l
-rw-r----- 1 adric adric 32 Jun 3 09:29 m
drwxr-x--- 2 adric adric 40 Jun 3 09:29 n
-rw-r----- 1 adric adric 32 Jun 3 09:29 o
-rw-r----- 1 adric adric 32 Jun 3 09:29 p
drwxr-x--- 2 adric adric 40 Jun 3 09:29 q
-rw-r----- 1 adric adric 32 Jun 3 09:29 r
-rw-r----- 1 adric adric 32 Jun 3 09:29 s
-rw-r----- 1 adric adric 32 Jun 3 09:29 t
drwxr-x--- 2 adric adric 40 Jun 3 09:29 u
-rw-r----- 1 adric adric 32 Jun 3 09:29 v
-rw-r----- 1 adric adric 32 Jun 3 09:29 w
-rw-r----- 1 adric adric 32 Jun 3 09:29 x
drwxr-x--- 2 adric adric 40 Jun 3 09:29 y
-rw-r----- 1 adric adric 32 Jun 3 09:29 z
$ LANG=C ls -l --group-directories-first
total 76
drwxr-x--- 2 adric adric 40 Jun 3 09:29 j
drwxr-x--- 2 adric adric 40 Jun 3 09:29 y
drwxr-x--- 2 adric adric 40 Jun 3 09:29 c
drwxr-x--- 2 adric adric 40 Jun 3 09:29 u
drwxr-x--- 2 adric adric 40 Jun 3 09:29 q
drwxr-x--- 2 adric adric 40 Jun 3 09:29 n
drwxr-x--- 2 adric adric 40 Jun 3 09:29 g
-rw-r----- 1 adric adric 32 Jun 3 09:29 m
-rw-r----- 1 adric adric 32 Jun 3 09:29 z
-rw-r----- 1 adric adric 32 Jun 3 09:29 b
-rw-r----- 1 adric adric 32 Jun 3 09:29 k
-rw-r----- 1 adric adric 32 Jun 3 09:29 l
-rw-r----- 1 adric adric 32 Jun 3 09:29 a
-rw-r----- 1 adric adric 32 Jun 3 09:29 h
-rw-r----- 1 adric adric 32 Jun 3 09:29 o
-rw-r----- 1 adric adric 32 Jun 3 09:29 p
-rw-r----- 1 adric adric 32 Jun 3 09:29 i
-rw-r----- 1 adric adric 32 Jun 3 09:29 r
-rw-r----- 1 adric adric 32 Jun 3 09:29 s
-rw-r----- 1 adric adric 32 Jun 3 09:29 t
-rw-r----- 1 adric adric 32 Jun 3 09:29 e
-rw-r----- 1 adric adric 32 Jun 3 09:29 v
-rw-r----- 1 adric adric 32 Jun 3 09:29 w
-rw-r----- 1 adric adric 32 Jun 3 09:29 x
-rw-r----- 1 adric adric 32 Jun 3 09:29 d
-rw-r----- 1 adric adric 32 Jun 3 09:29 f
$ LANG=C ls -l --group-directories-first --sort=name
total 76
drwxr-x--- 2 adric adric 40 Jun 3 09:29 j
drwxr-x--- 2 adric adric 40 Jun 3 09:29 y
drwxr-x--- 2 adric adric 40 Jun 3 09:29 c
drwxr-x--- 2 adric adric 40 Jun 3 09:29 u
drwxr-x--- 2 adric adric 40 Jun 3 09:29 q
drwxr-x--- 2 adric adric 40 Jun 3 09:29 n
drwxr-x--- 2 adric adric 40 Jun 3 09:29 g
-rw-r----- 1 adric adric 32 Jun 3 09:29 m
-rw-r----- 1 adric adric 32 Jun 3 09:29 z
-rw-r----- 1 adric adric 32 Jun 3 09:29 b
-rw-r----- 1 adric adric 32 Jun 3 09:29 k
-rw-r----- 1 adric adric 32 Jun 3 09:29 l
-rw-r----- 1 adric adric 32 Jun 3 09:29 a
-rw-r----- 1 adric adric 32 Jun 3 09:29 h
-rw-r----- 1 adric adric 32 Jun 3 09:29 o
-rw-r----- 1 adric adric 32 Jun 3 09:29 p
-rw-r----- 1 adric adric 32 Jun 3 09:29 i
-rw-r----- 1 adric adric 32 Jun 3 09:29 r
-rw-r----- 1 adric adric 32 Jun 3 09:29 s
-rw-r----- 1 adric adric 32 Jun 3 09:29 t
-rw-r----- 1 adric adric 32 Jun 3 09:29 e
-rw-r----- 1 adric adric 32 Jun 3 09:29 v
-rw-r----- 1 adric adric 32 Jun 3 09:29 w
-rw-r----- 1 adric adric 32 Jun 3 09:29 x
-rw-r----- 1 adric adric 32 Jun 3 09:29 d
-rw-r----- 1 adric adric 32 Jun 3 09:29 f
----- </SNIP> -----
Doing the same test on Ubuntu 24.04 results in both the directory and
file groupings being sorted by name.
----- <SNIP> -----
$ lsb_release -rd
No LSB modules are available.
Description: Ubuntu 24.04.4 LTS
Release: 24.04
$ LANG=C ls -l --group-directories-first
total 104
drwxr-x--- 2 adric adric 4096 Jun 3 09:38 c
drwxr-x--- 2 adric adric 4096 Jun 3 09:38 g
drwxr-x--- 2 adric adric 4096 Jun 3 09:38 j
drwxr-x--- 2 adric adric 4096 Jun 3 09:38 n
drwxr-x--- 2 adric adric 4096 Jun 3 09:38 q
drwxr-x--- 2 adric adric 4096 Jun 3 09:38 u
drwxr-x--- 2 adric adric 4096 Jun 3 09:38 y
-rw-r----- 1 adric adric 32 Jun 3 09:38 a
-rw-r----- 1 adric adric 32 Jun 3 09:38 b
-rw-r----- 1 adric adric 32 Jun 3 09:38 d
-rw-r----- 1 adric adric 32 Jun 3 09:38 e
-rw-r----- 1 adric adric 32 Jun 3 09:38 f
-rw-r----- 1 adric adric 32 Jun 3 09:38 h
-rw-r----- 1 adric adric 32 Jun 3 09:38 i
-rw-r----- 1 adric adric 32 Jun 3 09:38 k
-rw-r----- 1 adric adric 32 Jun 3 09:38 l
-rw-r----- 1 adric adric 32 Jun 3 09:38 m
-rw-r----- 1 adric adric 32 Jun 3 09:38 o
-rw-r----- 1 adric adric 32 Jun 3 09:38 p
-rw-r----- 1 adric adric 32 Jun 3 09:38 r
-rw-r----- 1 adric adric 32 Jun 3 09:38 s
-rw-r----- 1 adric adric 32 Jun 3 09:38 t
-rw-r----- 1 adric adric 32 Jun 3 09:38 v
-rw-r----- 1 adric adric 32 Jun 3 09:38 w
-rw-r----- 1 adric adric 32 Jun 3 09:38 x
-rw-r----- 1 adric adric 32 Jun 3 09:38 z
----- </SNIP> -----
** Affects: rust-coreutils (Ubuntu)
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2155164
Title:
ls does not sort filenames when --group-directories-first is specified
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/rust-coreutils/+bug/2155164/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs