디렉토리 목록이 완전히 정렬되지 않았습니다


18

데비안 리눅스 시스템에 다음 디렉토리 목록이 있습니다. 그러나 한 가지 이상한 점은 populate.sql 파일이 나머지 파일과 정렬되지 않은 것입니다.

-rw-r--r-- 1 user1 user1 10004 Jul 28 13:16 populate2.sql
-rw-r--r-- 1 user1 user1 10244 Jul 28 13:16 populate3.sql
-rw-r--r-- 1 user1 user1 10359 Jul 28 13:16 populate4.sql
-rw-r--r-- 1 user1 user1 11618 Jul 28 13:16 populate5.sql
-rw-r--r-- 1 user1 user1 11654 Jul 28 13:17 populate6.sql
-rw-r--r-- 1 user1 user1 12198 Jul 30 16:20 populate7.sql
-rw-r--r-- 1 user1 user1 12286 Aug 10 00:10 populate8.sql
-rw-r--r-- 1 user1 user1 12331 Aug 19 08:48 populate9.sql
-rw-r--r-- 1 user1 user1 12401 Aug 20 14:58 populatea.sql
-rw-r--r-- 1 user1 user1 12460 Aug 22 01:09 populateb.sql
-rw-r--r-- 1 user1 user1 12503 Aug 22 17:13 populatec.sql
-rw-r--r-- 1 user1 user1 13341 Aug 23 23:23 populated.sql
-rw-r--r-- 1 user1 user1 13414 Aug 27 23:01 populatee.sql
-rw-r--r-- 1 user1 user1 16064 Aug 31 00:03 populatef.sql
-rw-r--r-- 1 user1 user1 17529 Sep 16 15:38 populateg.sql
-rw-r--r-- 1 user1 user1 19348 Sep 19 22:50 populateh.sql
-rw-r--r-- 1 user1 user1 21033 Sep 27 20:46 populatei.sql
-rw-r--r-- 1 user1 user1 21024 Sep 28 00:02 populatej.sql
-rw-r--r-- 1 user1 user1 22505 Sep 28 22:55 populatek.sql
-rw-r--r-- 1 user1 user1 23831 Oct  5 21:24 populatel.sql
-rw-r--r-- 1 user1 user1 23665 Nov  2 22:16 populatem.sql
-rw-r--r-- 1 user1 user1 23513 Nov  4 21:53 populaten.sql
-rw-r--r-- 1 user1 user1 27191 Nov 19 14:55 populateo.sql
-rw-r--r-- 1 user1 user1 30142 Nov 28 17:51 populatep.sql
-rw-r--r-- 1 user1 user1 30853 Dec 10 14:49 populateq.sql
-rw-r--r-- 1 user1 user1 33690 Dec 11 23:43 populater.sql
-rw-r--r-- 1 user1 user1  9945 Jul 28 13:16 populate.sql
-rw-r--r-- 1 user1 user1 38696 Jan 16 22:27 populates.sql
-rw-r--r-- 1 user1 user1 38696 Jan 16 22:27 populatet.sql

처음에는 숨겨진 문자 또는 무언가 때문일 수 있다고 생각했지만 r과 s 사이의 숨겨진 문자는 생각할 수 없습니다. 또한 vim populate.sql명령 프롬프트에 입력 하면 올바른 파일이 열리고 이상한 문자가 없다는 추가 증거가 있습니다.

populate.sql올바르게 정렬되지 않은 아이디어 가 있습니까?


1
이것은 Linux 시스템 또는 Mac OS / BSD에 있습니까? ( ls버전이 다릅니다.) 정렬을 위해 마침표가 무시 되는 것처럼 보이는데 이는 흥미 롭습니다.
와일드 카드

@Wildcard 그것은 데비안 리눅스에 있습니다
kojow7

답변:


27

LC_COLLATE유니 코드 인식 데이터 정렬을 사용하는 경우 (예 : en_US.UTF-8구두점을 무시하는 정렬 순서) 결과적 populate.sql으로 populatesqlafter와 populatersqlbefore 로 정렬됩니다 populatessql.

이 동작 변경 사항을 보려면을 실행 해보십시오 LC_COLLATE=C ls -al. C 정렬 순서로 정렬됩니다 (코드 포인트 또는 로캘에 관계없이 특정 바이트 기준).


2
흥미 롭군 기본적으로 데비안의 최신 버전이 기본적으로 제공됩니까? 아니면이를 활성화하기 위해 변경 한 설정이 있습니까? 이전에이 '문제'가 발생했던 것을 기억하지 못합니까?
kojow7

나는 그것이 얼마나 최근인지 알지 못하지만 기본 로케일은 항상 C라고 생각합니다.
David

1
LC_ *, LANG 변수가 설정되지 않은 경우 기본 로케일은 항상 C / POSIX이지만 대부분의 시스템에는 기본 로케일이 구성되어 있으며 사용자는 일반적으로 로그인시에도 하나를 지정할 수 있습니다. 데비안에서 발견 된 GNU libc 로케일 정렬 동작은 확실히 10 년이 넘었습니다.
Stéphane Chazelas

참고로 새 데비안 설치를 시도했지만 기본적으로 구두점을 정렬 순서대로 무시합니다. 에서 /etc/default/locale그것을 말한다 LANG="en_US.UTF-8".
kojow7
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.