Erstellen Sie die folgenden Dateien in einem Verzeichnis.
$ touch .a .b a b A B 你好嗎
In meiner Standardreihenfolge ls
werden führende Punkte ignoriert und mit den anderen Dateien vermischt.
$ ls -Al
total 0
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 A
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 B
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:06 你好嗎
Ich kann ändern LC_COLLATE
, um die Punktedateien zuerst zu setzen.
$ LC_COLLATE=C ls -Al
total 0
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 .b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 A
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 B
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 a
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:03 b
-rw-r--r-- 1 sparhawk sparhawk 0 Jun 8 17:06 你好嗎
Leider macht dies die Sortierreihenfolge zwischen Groß- und Kleinschreibung, dh A
und B
vor a
und b
. Gibt es eine Möglichkeit, zuerst Punktdateien zu drucken, ohne die Groß- und Kleinschreibung zu beachten ( A
und a
vor B
und b
)?
Bearbeiten: Versuch, LC_COLLATE zu ändern
Keine der bisherigen Antworten gibt die Funktionalität von ls
easy vollständig wieder . Es ist denkbar, dass ich einige davon in eine Funktion einbinden könnte, aber dies müsste einen detaillierten Code enthalten, der beschreibt, wie man ohne Argumente arbeitet, anstatt ein Verzeichnis als Argument anzugeben. Oder wie man mit einer expliziten -d
Flagge umgeht.
Alternativ dachte ich, dass es vielleicht einen besseren geben könnte LC_COLLATE
. Ich kann das jedoch nicht schaffen. Ich benutze gerade LC_COLLATE="en_AU.UTF-8"
. Ich habe es überprüft /usr/share/i18n/locales/en_AU
(obwohl ich nicht sicher bin, ob dies die richtige Datei ist, da ich keinen Verweis darauf sehe UTF-8
). Ich habe folgendes gefunden.
LC_COLLATE
copy "iso14651_t1"
END LC_COLLATE
/usr/share/i18n/locales/iso14651_t1
enthält copy "iso14651_t1_common"
. Schließlich /usr/share/i18n/locales/iso14651_t1_common
enthält
<U002E> IGNORE;IGNORE;IGNORE;<U002E> # 47 .
Ich habe diese Zeile gelöscht sudo locale-gen
, ausgeführt und meinen Computer neu gestartet. Daran hat sich leider nichts geändert.