sort и ls — почему заглавные буквы не сортируются первыми?

sort и ls — почему заглавные буквы не сортируются первыми?

Мне нужна такая сортировка, с заглавными буквами перед строчными:

-rw-r--r--.  1 0 0    183 2014-10-14 20:17 ./CHECKSUMS.md5
-rw-r--r--.  1 0 0    185 2014-10-14 20:17 ./CHECKSUMS.asc
drwxr-xr-x.  2 0 0   4096 2014-10-14 18:01 ./a
-rw-------.  1 0 0 464140 2013-12-16 19:11 ./a/pam-1.1.8-x86_64-2mg.txz
drwxr-xr-x.  2 0 0   4096 2014-10-14 19:55 ./b
-rw-------.  1 0 0 464140 2014-10-14 19:55 ./b/pam-1.1.8-x86_64-2mg.txz
drwxr-xr-x.  2 0 0   4096 2014-10-14 18:00 ./c
drwxr-xr-x.  2 0 0   4096 2014-10-14 18:00 ./d
drwxr-xr-x.  2 0 0   4096 2014-10-14 18:00 ./e
drwxr-xr-x.  2 0 0   4096 2014-10-14 18:00 ./f
drwxr-xr-x.  2 0 0   4096 2014-10-14 18:00 ./g

Я использую эту команду:

find -L . -print  | sort -d | xargs ls -nld --time-style=long-iso

и результат:

drwxr-xr-x. 29 0 0   4096 2014-10-14 20:17 .
drwxr-xr-x.  2 0 0   4096 2014-10-14 18:01 ./a
-rw-------.  1 0 0 464140 2013-12-16 19:11 ./a/pam-1.1.8-x86_64-2mg.txz
drwxr-xr-x.  2 0 0   4096 2014-10-14 19:55 ./b
-rw-------.  1 0 0 464140 2014-10-14 19:55 ./b/pam-1.1.8-x86_64-2mg.txz
drwxr-xr-x.  2 0 0   4096 2014-10-14 18:00 ./c
-rw-r--r--.  1 0 0    183 2014-10-14 20:17 ./CHECKSUMS.md5
drwxr-xr-x.  2 0 0   4096 2014-10-14 18:00 ./d
drwxr-xr-x.  2 0 0   4096 2014-10-14 18:00 ./e
drwxr-xr-x.  2 0 0   4096 2014-10-14 18:00 ./f
drwxr-xr-x.  2 0 0   4096 2014-10-14 18:00 ./g

Как мне получить нужный мне порядок сортировки?

решение1

Проверьте переменную окружения LC_COLLATE. Проще всего будет использовать команду locales. Если хотите, можете установить другое значение. Например, можно сделать (предполагается, что bash)

export LC_COLLATE="C"

и это должно решить вашу проблему.

решение2

Чаще всего используют export LC_ALL=C, создают скрипт с ls, sort и т. д., а затем возвращаются в ваш любимый LC, в моем случае UTF8.

Связанный контент