On 06/03/2025 20:50, Valérie et David VANTYGHEM via GNU coreutils General Discussion wrote:
Hello,When I list files in a directory, they are sorted like . before file extension is ignored. |$ ls -AR --format=single-column ./DISQUETTE\ 1/*| ‘./DISQUETTE 1/CONF.ENG’ ‘./DISQUETTE 1/CONF.FRE’ ‘./DISQUETTE 1/CONF.GER’ ‘./DISQUETTE 1/CONFIRM.ENG’ ‘./DISQUETTE 1/CONFIRM.FRE’ ‘./DISQUETTE 1/CONFIRM.GER’ ‘./DISQUETTE 1/CONFIRM.ITA’ ‘./DISQUETTE 1/CONFIRM.SPA’ ‘./DISQUETTE 1/CONF.ITA’ ‘./DISQUETTE 1/CONF.SPA’ tree sort files without ignoring . before file extension: |$ tree -daifv --noreport ./DISQUETTE\ 1/|xargs -I {} tree -aifv -L 1 --noreport {}|xargs -I {} find {} -prune -type f| ./DISQUETTE 1/CONF.ENG ./DISQUETTE 1/CONF.FRE ./DISQUETTE 1/CONF.GER ./DISQUETTE 1/CONF.ITA ./DISQUETTE 1/CONF.SPA ./DISQUETTE 1/CONFIRM.ENG ./DISQUETTE 1/CONFIRM.FRE ./DISQUETTE 1/CONFIRM.GER ./DISQUETTE 1/CONFIRM.ITA ./DISQUETTE 1/CONFIRM.SPA |Is it a bug or am I missing a ls option?| |Test ZIP file: https://infolib.re/blog/wp-content/uploads/2025/02/DISQUETTE-1.zip |
In your locale the '.' is insignificant to the sorting order. Same in my locale, it's common: $ /bin/ls -1 CONF.ENG CONF.FRE CONF.GER CONFIRM.ENG CONFIRM.FRE CONFIRM.GER CONFIRM.ITA CONFIRM.SPA CONF.ITA CONF.SPA Switching to the C locale, makes '.' significant again: $ LC_ALL=C /bin/ls -1 CONF.ENG CONF.FRE CONF.GER CONF.ITA CONF.SPA CONFIRM.ENG CONFIRM.FRE CONFIRM.GER CONFIRM.ITA CONFIRM.SPA You also have the option of version sorting in any locale: $ /bin/ls -1 --sort=version CONF.ENG CONF.FRE CONF.GER CONF.ITA CONF.SPA CONFIRM.ENG CONFIRM.FRE CONFIRM.GER CONFIRM.ITA CONFIRM.SPA cheers, Pádraig
