Какой символ прописать в имени файла чтобы он при сортировке был первым?

Доброго времени суток!
У меня возникла проблема с сортировками имен файлов, если первым в имени файла идет символ.
Пример:

_trash
aName
bName
cName

В примере выше всё правильно — так сортируют даже винда и мак. Но, если с алфавитом все понятно и мы знаем как назвать файл, чтоб тот был первым в отсортированном списке, то как быть с символьным названием файла? У символов есть какой-то порядок?

Я пробовал несколько вариантов, добавляя разные символы в название, но сортировка просто не происходила и имена оставались на тех же местах.
Пример:

!trash
&trash
_trash
aName
bName
cName

Обратная сортировка:

aName
bName
cName
!trash
&trash
_trash

Как видите, имена с символом вначале просто не сортируются.


Ответы (2 шт):

Автор решения: HaZcker

Думаю сортировка выполняется по коду ASCII символов

В строке вы можете узнать код символа при помощи метода charCodeAt

Посмотрите пример:

const str_1 = '!target'
const str_2 = '&target'
const str_3 = '_target'

const str_4 = 'aName'
const str_5 = 'bName'
const str_6 = 'cName'

console.log(str_1.charCodeAt(0))
console.log(str_2.charCodeAt(0))
console.log(str_3.charCodeAt(0))

console.log(str_4.charCodeAt(0))
console.log(str_5.charCodeAt(0))
console.log(str_6.charCodeAt(0))

→ Ссылка
Автор решения: avp

Это фокусы локализации.

Установите LC_ALL=C и смотрите на ожидаемый (в порядке ascii кодов) вывод:

avp@avp-desktop:/tmp/t$ cat 2
&
c
a
_
b
!
avp@avp-desktop:/tmp/t$ ls | cat
2
aFile
bFile
cFile
_file
!file
&file
avp@avp-desktop:/tmp/t$ sort 2
_
!
&
a
b
c
avp@avp-desktop:/tmp/t$ 
avp@avp-desktop:/tmp/t$ 
avp@avp-desktop:/tmp/t$ LC_ALL=C sort 2
!
&
_
a
b
c
avp@avp-desktop:/tmp/t$ LC_ALL=C ls |cat
!file
&file
2
_file
aFile
bFile
cFile
avp@avp-desktop:/tmp/t$ uname -a; cat /etc/issue
Linux avp-desktop 5.4.0-122-generic #138~18.04.1-Ubuntu SMP Fri Jun 24 14:14:03 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Linux Mint 19.3 Tricia \n \l

avp@avp-desktop:/tmp/t$ 
→ Ссылка