Dateien unter Linux mit ls alphabetisch sortieren?

Dateien unter Linux mit ls alphabetisch sortieren?

Ich versuche, Dateien (einschließlich versteckter Dateien) in Ubuntu Xenial alphabetisch in natürlicher Reihenfolge zu sortieren.

Ich bin zu folgendem Ergebnis gekommen:

ls -l1va

Welche Drucke:

.
..
.ICEauthority
.Private
.Xauthority
.atom
.babel.json
.bashrc
.bash_history
.bash_logout
.cache
.cargo
.config
.dbeaver4
.dbeaver-drivers
.dbus
.docker
.eclipse
.ecryptfs
.electron
.fltk
.gconf
.gem
.gimp-2.8
.gitconfig
.gksu.lock
.gnome
.gnome2
.gnome2_private
.gnupg
.local
.mozilla
.nano
.node-gyp
.npm
.nvm
.pki
.profile
.putty
.recently-used
.selected_editor
.ssh
.sudo_as_admin_successful
.thumbnails
.v8flags.6.2.414.32-node.8.4654dce123559e380233361202560f0e.json
.vmware
.vscode
.vscode-insiders
.wget-hsts
.xsession-errors
.xsession-errors.old
.yarn
.yarnrc
Desktop
Documents
Downloads
Music
Pictures
Projects
Public
Templates
Videos
bin
mnt
tmp

Wie kann ich erreichen, dass die Groß-/Kleinschreibung beim Sortieren ignoriert wird und nach Buchstaben statt nach der Position in der ASCII-Tabelle sortiert wird (was vermutlich der Grund dafür ist, dass Z vor a steht)?

Antwort1

Die Sortierreihenfolge hängt vom Gebietsschema ab. Das Standardgebietsschema Csortiert wie in Ihrem Beispiel:

$ LC_COLLATE=C ls -A
.hidden  Zappa  aardvark  vent  water  zebra

Viele andere hingegen geben den Buchstaben den Vorrang und ignorieren die Groß-/Kleinschreibung und die führenden Punkte:

$ LC_COLLATE=en_US.UTF-8 ls -A
aardvark  .hidden  vent  water  Zappa  zebra

(Es würde mich nicht überraschen, wenn einige Lokalisten auch Charaktere wiegegenUndmals gleichwertig, aber mir fällt keins ein, das das tut.)

Natürlich müssen diese Gebietsschemas auf dem System vorhanden sein. locale -asollte die Gebietsschemas anzeigen, die derzeit auf dem System verwendbar sind, und Sie können sie verwenden, locale-gen $localenameum die fehlenden zu generieren. Dann wird dpkg-reconfigure localeseine Liste angezeigt, in der Sie auswählen können, welche Gebietsschemas generiert werden sollen.

Antwort2

Durch Festlegen $LC_COLLATEeines entsprechenden Werts werden die Namen entsprechend sortiert.

LC_COLLATE=en_US ls -l1va

Darüber hinaus kann es im Startskript der Shell festgelegt werden, damit es jedes Mal wirksam wird.

export LC_COLLATE=en_US

Antwort3

Ab Ubuntu 19.10 LC_COLLATE=Cscheint die Einstellung nicht auszureichen, aber sie LC_ALL=Cscheint zu funktionieren (so dass lsdie ASCII-Reihenfolge für Datei- und Verzeichnisnamen verwendet wird).

Antwort4

Die Antwort war nicht leicht zu finden, aber sie war hier auf Stack Exchange.

Der "Fix" beinhaltet das Bearbeiten von /usr/share/i18n/locales/iso14651_t1_common und das Ändern der Zeile

<U002E> IGNORE;IGNORE;IGNORE;<U002E> # 47 .

hinein:

<U002E> <RES-1>;IGNORE;IGNORE;<U002E> # 47 .

Sehen:https://unix.stackexchange.com/a/361006/262190

verwandte Informationen