Wenn nicht ohne Argumente nach Namen sortiert wird, möchten Sie möglicherweise überprüfen, ob ls auf etwas anderes ausgerichtet ist, oder es einfach über den vollständigen Pfad aufrufen, um vorhandene Aliase zu entfernen.
Tvanfosson
gnu-coreutils wird standardmäßig sortiert. Welches System verwenden Sie (wie andere gefragt haben)
Nick Fortescue
Sind Sie sicher, dass Sie nach Name und nicht nach Typ sortieren möchten (dh zuerst Verzeichnis, dann Dateien)?
Curtisk
Großbuchstaben stehen vor Kleinbuchstaben, daher steht Datei Z vor Datei a ... wie kann ich das beheben?
ArtOfWarfare
Auf der Manpage steht "separat und in lexikografischer Reihenfolge sortiert". Dateien werden nach dem ersten Zeichen sortiert: numerische [0..9] und OBERE Zeichen [A..Z] und niedrige Zeichen [a..z]
Gürol Canbek
Antworten:
131
Mein ls sortiert standardmäßig nach Namen. Was siehst du?
man ls Zustände:
List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.::
lssortiert nicht, wenn -c1angegeben: Gibt es eine Möglichkeit, dies zu erreichen? ( --sort=namescheint nicht zu funktionieren)
dhc
1
Das ist nicht wahr. mit ls -la, ich sehe : .bashrc - can - .config - Downloads - .local - tmp, sort be name wäre:.bashrc - .config - .local - Downloads - can - tmp
12431234123412341234123
1
meins sagt 100.jpg kommt vor 10.jpg. Sinnvoll, denke ich, wenn "0" vor "steht." aber es ist immer noch nicht intuitiv
chiliNUT
Ich sehe "M" vor "b". Verwirrt. Warten Sie, spielt die Großschreibung eine Rolle?
Daniel Springer
105
Für etwas Einfaches können Sie ls mit sort kombinieren . Für nur eine Liste von Dateinamen: ls -1 | Sortieren
So sortieren Sie sie in umgekehrter Reihenfolge: ls -1 | sort -r
Gibt es eine Möglichkeit, Dateien wie ls | sort -nfolgt zu sortieren: 1.1.1; 1.1.2; 1.1.3; 2.10.1; 2.10.15; 2.10.2; 2.10.20; 2.10.21; 2.1.1; 2.1.10; 2.1.15; 2.1.2; 2.1.3; 2.1.4; 10.1.1; 10.1.2; 10.1.3; 11.0.1; 11.0.2; 11.0.20; 11.0.21; 11.0.22; Wie Sie 2.10.15 vor 2.10.2 sehen können .
BBK
Ich mache eine Android-Entwicklung auf einem Pidion-Gerät und es wird nicht automatisch sortiert, daher war dies sehr hilfreich! Das einzige Problem ist, dass es so aussieht, als würde es Softlinks sortieren, aber aus irgendeinem Grund keine Dateien sortieren
Mitch
Auf dem Mac sieht es so aus, als ob der zweite Befehl auf verkürzt werden kann ls -1r.
Ash Ryan Arnwine
4
@BBK sort -V sortiert nach Versionsnummern, so dass Sie erhalten .. 2.10.2; 2.10.15; .. from man sort .. --sort = WORD sortiert nach WORD: general-numeric -g, human-numeric -h, month -M, numeric -n, random -R, version -V
mosh
35
lsfrom coreutilsführt standardmäßig eine länderspezifische Sortierung durch und kann daher in einigen Fällen zu überraschenden Ergebnissen führen (z. B. %foowird zwischen barund quuxin sortiert LANG=en_US). Wenn Sie eine ASCIIbetical-Sortierung wünschen, verwenden Sie
LANGWenn Sie das Sortierverhalten beeinflussen, hilft mir dieser Beitrag sehr!
Yurenchen
Das hat auch bei mir funktioniert. Könnten Sie das näher erläutern? Warum sortiert es anders?
Kostas
1
Diese Dosis funktioniert, aber die Ausgabe ?für jedes Nicht-ASCII-Zeichen, wenn die Ausgabe ein Terminal ist (schlechte Funktion von ls prüft, ob sie an ein Terminal ausgegeben wird, funktioniert beim Piping). Sie können dies mit Piping to Cat "beheben", das C.UTF-8Gebietsschema verwenden (sofern Ihr System dies unterstützt) und / oder das -bFlag verwenden. Noch besser, überhaupt nicht verwenden ls, besser verwenden `
12431234123412341234123
Dies half mir herauszufinden, dass für mich das Problem darin bestand, dass einige meiner Dateinamen einen Bindestrich (-) und einige einen Bindestrich (-) enthielten. lssortiert Bindestriche vor Bindestrichen.
Jamy Mahabier
17
Das Schöne an * nix-Tools ist, dass Sie sie kombinieren können:
ls -l | sort -k9,9
Die Ausgabe von ls -lwird so aussehen
-rw-rw-r-- 1 luckydonald luckydonald 532 Feb 21 2017 Makefile
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt
Wenn 9,9Sie also die Spalte 9bis zur Spalte sortieren 9, sind dies die Dateinamen. Sie müssen angeben, wo Sie anhalten sollen. Dies ist in diesem Fall dieselbe Spalte. Die Spalten beginnen mit 1.
Wenn Sie Groß- / Kleinschreibung ignorieren möchten, fügen Sie --ignore-caseden Befehl sort hinzu.
Herausgefunden bedeutet dies, die Spalte 9nach derselben Spalte zu sortieren 9. Eine normale lsAusgabe sieht folgendermaßen aus: drwx------ 8 999 user 4.0K Feb 5 2017 file.txtSpalte 9 sind also die Dateinamen. Wenn Sie den Fall ignorieren möchten, verwenden Sie --ignore-caseon sort.
Das ist nicht immer wahr. Ich kenne die Umstände nicht genau, die dies nicht zutreffen lassen, aber auf meinem Computer mit Ubuntu 12.04 ist die Ausgabe von ls alphabetisch sortiert (Groß- und Kleinschreibung wird ignoriert).
Patrick James McDougle
Guter Fang! Scheint, als würde es basierend auf dem ASCII-Code bestellt. Großbuchstaben werden von Kleinbuchstaben gefolgt.
Kent Pawar
1
Ich habe festgestellt, dass mein MacOS zuerst Zahlen, dann Großbuchstaben, dann Unterstriche und dann Kleinbuchstaben sortiert. Es ist lustig, dass sie nicht zwischen Groß- und Kleinschreibung unterscheiden. Auf der anderen Seite unterscheidet mein Debian zwischen Groß- und Kleinschreibung, aber es sortiert die Buchstaben unempfindlich, es sei denn, es gibt ein Unentschieden, dann gewinnt Kleinbuchstaben! Beispiel: ABA.txt ABb.txt aBC.txt AbC.txt ABc.txt
zk82
Ich bin auch auf einem MAC. Ich war enttäuscht, die Sortierung von A, Z, A, Z zu sehen. Ich bin hier, weil ich lieber A, a, Z, a habe. danke für deinen tipp. werde hier die normallösungen ausprobieren .
Nyxee
8
Dateien, die sich nur durch eine numerische Zeichenfolge unterscheiden, können nach dieser Nummer sortiert werden, sofern ein Trennzeichen vorangestellt ist.
In diesem Fall kann die folgende Syntax verwendet werden:
@Norbert: Du bist richtig, aber es which lswürde gelingen, selbst wenn bash ein eingebautes ls hätte. Tun Sie es lieber builtin lsin Bash und erhalten Sie einen Fehler.
Pianosaurus
4
@Norbert: Gibt whichimmer einen Pfad zurück. Verwenden Sie type lsdiese Option , um zu bestimmen, was die Shell für integriert hält ls(integriert, funktionsfähig, ausführbar).
Ephemient
3
Das lsDienstprogramm sollte IEEE Std 1003.1-2001 ( POSIX.1) entsprechen, in dem Folgendes angegeben ist:
22027: Verzeichnis- und Nichtverzeichnisoperanden werden getrennt nach der Sortierreihenfolge im aktuellen Gebietsschema sortiert.
26027: Standardmäßig ist das Format nicht angegeben, aber die Ausgabe muss alphabetisch nach Symbolnamen sortiert sein :
Bibliotheks- oder Objektname, wenn −A angegeben ist
Symbolname
Symboltyp
Wert des Symbols
Die dem Symbol zugeordnete Größe, falls zutreffend
In Debian Jessie, this works nice:
ls -lah --group-directories-first
# l=use a long listing format
# a=do not ignore entries starting with .
# h=human readable
# --group-directories-first=(obvious)
# Note: add -r for reverse alpha
# You might consider using lh by appending to ~/.bashrc as the alias:
~$ echo "alias lh='ls -lah --group-directories-first'" >>~/.bashrc
# -- restart your terminal before using lh command --
Antworten:
Mein ls sortiert standardmäßig nach Namen. Was siehst du?
man ls
Zustände:List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.
::quelle
ls
sortiert nicht, wenn-c1
angegeben: Gibt es eine Möglichkeit, dies zu erreichen? (--sort=name
scheint nicht zu funktionieren)ls -la
, ich sehe :.bashrc - can - .config - Downloads - .local - tmp
, sort be name wäre:.bashrc - .config - .local - Downloads - can - tmp
Für etwas Einfaches können Sie ls mit sort kombinieren . Für nur eine Liste von Dateinamen:
ls -1 | Sortieren
So sortieren Sie sie in umgekehrter Reihenfolge:
ls -1 | sort -r
quelle
ls | sort -n
folgt zu sortieren: 1.1.1; 1.1.2; 1.1.3; 2.10.1; 2.10.15; 2.10.2; 2.10.20; 2.10.21; 2.1.1; 2.1.10; 2.1.15; 2.1.2; 2.1.3; 2.1.4; 10.1.1; 10.1.2; 10.1.3; 11.0.1; 11.0.2; 11.0.20; 11.0.21; 11.0.22; Wie Sie 2.10.15 vor 2.10.2 sehen können .ls -1r
.ls
fromcoreutils
führt standardmäßig eine länderspezifische Sortierung durch und kann daher in einigen Fällen zu überraschenden Ergebnissen führen (z. B.%foo
wird zwischenbar
undquux
in sortiertLANG=en_US
). Wenn Sie eine ASCIIbetical-Sortierung wünschen, verwenden Siequelle
LANG
Wenn Sie das Sortierverhalten beeinflussen, hilft mir dieser Beitrag sehr!?
für jedes Nicht-ASCII-Zeichen, wenn die Ausgabe ein Terminal ist (schlechte Funktion von ls prüft, ob sie an ein Terminal ausgegeben wird, funktioniert beim Piping). Sie können dies mit Piping to Cat "beheben", dasC.UTF-8
Gebietsschema verwenden (sofern Ihr System dies unterstützt) und / oder das-b
Flag verwenden. Noch besser, überhaupt nicht verwendenls
, besser verwenden `ls
sortiert Bindestriche vor Bindestrichen.Das Schöne an * nix-Tools ist, dass Sie sie kombinieren können:
Die Ausgabe von
ls -l
wird so aussehenWenn
9,9
Sie also die Spalte9
bis zur Spalte sortieren9
, sind dies die Dateinamen. Sie müssen angeben, wo Sie anhalten sollen. Dies ist in diesem Fall dieselbe Spalte. Die Spalten beginnen mit1
.Wenn Sie Groß- / Kleinschreibung ignorieren möchten, fügen Sie
--ignore-case
den Befehl sort hinzu.quelle
-k9,9
das9
nach derselben Spalte zu sortieren9
. Eine normalels
Ausgabe sieht folgendermaßen aus:drwx------ 8 999 user 4.0K Feb 5 2017 file.txt
Spalte 9 sind also die Dateinamen. Wenn Sie den Fall ignorieren möchten, verwenden Sie--ignore-case
on sort.HINWEIS: "a" kommt NACH "Z":
$ touch A.txt aa.txt Z.txt
$ ls
A.txt Z.txt aa.txt
quelle
normal
lösungen ausprobieren .Dateien, die sich nur durch eine numerische Zeichenfolge unterscheiden, können nach dieser Nummer sortiert werden, sofern ein Trennzeichen vorangestellt ist.
In diesem Fall kann die folgende Syntax verwendet werden:
Beispiel:
quelle
Von der Manpage (für Bash ls):
quelle
which ls
würde gelingen, selbst wenn bash ein eingebautes ls hätte. Tun Sie es lieberbuiltin ls
in Bash und erhalten Sie einen Fehler.which
immer einen Pfad zurück. Verwenden Sietype ls
diese Option , um zu bestimmen, was die Shell für integriert hältls
(integriert, funktionsfähig, ausführbar).Das
ls
Dienstprogramm sollte IEEE Std 1003.1-2001 (POSIX.1
) entsprechen, in dem Folgendes angegeben ist:quelle
Überprüfen Sie Ihre
.bashrc
Datei auf Aliase.quelle
alias
, um nach allen aktuellen Aliasen zu suchen.ls -X funktioniert für diesen Zweck, falls Sie ls auf einen nützlicheren Standard eingestellt haben.
quelle
quelle