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

  • ls sort i... Valérie et David VANTYGHEM via GNU coreutils General Discussion
    • Re: ... Pádraig Brady

Reply via email to