Danh sách thư mục không được sắp xếp đầy đủ


18

Tôi có danh sách thư mục sau trên hệ thống Debian Linux. Tuy nhiên, có một điều kỳ lạ là tập tin pop.s.s.s dường như không được sắp xếp với phần còn lại.

-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

Lúc đầu, tôi nghĩ rằng đó có thể là do một nhân vật ẩn hoặc một cái gì đó, nhưng tôi không thể nghĩ ra một nhân vật ẩn sẽ xuất hiện giữa r và s. Ngoài ra, nếu tôi gõ vim populate.sqlvào dấu nhắc lệnh, nó sẽ mở tệp chính xác, đây là bằng chứng nữa cho thấy không có ký tự lạ nào ở đó.

Bất kỳ ý tưởng tại sao populate.sqlkhông được sắp xếp chính xác?


1
Đây có phải là trên hệ thống Linux hoặc Mac OS / BSD không? (Các lsphiên bản là khác nhau.) Có vẻ như khoảng thời gian đang bị bỏ qua cho các mục đích sắp xếp, đó là điều thú vị.
tự đại diện

@Wildcard Đó là trên Debian Linux
kojow7

Câu trả lời:


27

LC_COLLATEvới bất kỳ đối chiếu nhận biết Unicode nào, ví dụ: en_US.UTF-8kết quả theo thứ tự sắp xếp mà bỏ qua dấu chấm câu. Do đó, populate.sqlsắp xếp như populatesqlsau populatersqlnhưng trước populatessql.

Nếu bạn muốn thấy hành vi này thay đổi, hãy thử chạy LC_COLLATE=C ls -alvà nó sẽ được sắp xếp theo thứ tự sắp xếp C (theo các byte cụ thể mà không liên quan đến bất kỳ điểm mã hoặc địa phương nào).


2
Hấp dẫn. Các phiên bản gần đây của Debian có giống như vậy theo mặc định hay có cài đặt mà tôi đã thay đổi để kích hoạt tính năng đó không? Tôi không nhớ là đã từng gặp phải 'vấn đề' này chưa?
kojow7

Tôi không biết gần đây hay không, nhưng tôi tin rằng ngôn ngữ mặc định trước đây luôn là C.
David

1
Khi không có biến LC_ *, LANG nào được đặt, ngôn ngữ mặc định là và luôn luôn là C / POSIX, nhưng hầu hết các hệ thống đều có ngôn ngữ mặc định được định cấu hình và người dùng thường có thể chỉ định một địa điểm khi đăng nhập. Hành vi sắp xếp ngôn ngữ GNU libc được tìm thấy trên Debian đã diễn ra như vậy trong hơn 10 năm.
Stéphane Chazelas

Chỉ để tham khảo, tôi đã thử cài đặt Debian mới và vâng, nó bỏ qua dấu câu theo thứ tự sắp xếp theo mặc định. Trong /etc/default/localeđó nói LANG="en_US.UTF-8".
kojow7
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.