Verzeichnisliste nicht vollständig sortiert

18

Ich habe das folgende Verzeichnis auf einem Debian Linux-System. Eine seltsame Sache ist jedoch, dass die Datei populate.sql nicht mit dem Rest sortiert zu sein scheint.

-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

Zuerst dachte ich, es könnte an einem versteckten Charakter liegen oder so, aber ich kann mir keinen versteckten Charakter vorstellen, der zwischen r und s liegen würde. Wenn ich vim populate.sqlin die Eingabeaufforderung tippe, wird die richtige Datei geöffnet. Dies ist ein weiterer Beweis dafür, dass dort kein seltsames Zeichen vorkommt.

Irgendwelche Ideen, warum populate.sqlnicht richtig sortiert wird?

kojow7
quelle
1
Ist dies auf einem Linux-System oder Mac OS / BSD? (Die lsVersionen sind unterschiedlich.) Es sieht fast so aus, als würde die Periode zum Sortieren ignoriert , was interessant ist.
Wildcard
@Wildcard Es läuft unter Debian Linux
kojow7

Antworten:

27

LC_COLLATEB. en_US.UTF-8eine Sortierreihenfolge, bei der die Zeichensetzung ignoriert wird. Folglich populate.sqlsortiert populatesqlnach populatersqlaber vorher populatessql.

Wenn Sie möchten, dass sich dieses Verhalten ändert, versuchen Sie LC_COLLATE=C ls -al, es auszuführen. Es wird in C-Sortierreihenfolge sortiert (nach bestimmten Bytes, ohne Berücksichtigung von Codepunkten oder Gebietsschemas).

David
quelle
2
Interessant. Sind aktuelle Versionen von Debian standardmäßig so oder gibt es eine Einstellung, die ich geändert hätte, um dies zu ermöglichen? Ich kann mich nicht erinnern, jemals auf dieses "Problem" gestoßen zu sein?
Kojow7
Ich weiß nicht, wie aktuell es ist oder nicht, aber ich glaube, das Standardgebietsschema war immer C.
David
1
Wenn keine der Variablen LC_ *, LANG festgelegt ist, war und ist das Standardgebietsschema C / POSIX. Auf den meisten Systemen ist jedoch ein Standardgebietsschema konfiguriert, und Benutzer können im Allgemeinen auch beim Anmelden eines angeben. Das unter Debian festgestellte Sortierverhalten der GNU libc-Ländereinstellung ist seit über 10 Jahren so.
Stéphane Chazelas
Nur als Referenz habe ich eine neue Debian-Installation versucht und ja, es ignoriert standardmäßig die Interpunktion in ihrer Sortierreihenfolge. Darin /etc/default/localeheißt es LANG="en_US.UTF-8".
Kojow7