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

가장 간단하게는 내보내기 LC_ALL=C를 사용하고 ls, sort 등으로 스크립트를 만든 다음 즐겨 사용하는 LC(제 경우에는 UTF8)로 돌아갑니다.

관련 정보