Erstellen Sie die folgenden Dateien in einem Verzeichnis.
$ touch .a .b a b A B 你好嗎
In meiner Standardreihenfolge lswerden 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 Aund Bvor aund b. Gibt es eine Möglichkeit, zuerst Punktdateien zu drucken, ohne die Groß- und Kleinschreibung zu beachten ( Aund avor Bund b)?
Bearbeiten: Versuch, LC_COLLATE zu ändern
Keine der bisherigen Antworten gibt die Funktionalität von lseasy 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 -dFlagge 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_t1enthält copy "iso14651_t1_common". Schließlich /usr/share/i18n/locales/iso14651_t1_commonenthä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.