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 

Как я могу получить порядок сортировки, который я хочу?

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

 export LC_COLLATE="C" 

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

Просто используйте экспорт LC_ALL = C, создайте скрипт с помощью ls, sort и т. Д., А затем верните вам любимый LC, в моем случае UTF8.