Können Sie eine ls- Liste nach Namen sortieren ?
Können Sie eine ls- Liste nach Namen sortieren ?
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.::
lssortiert nicht, wenn -c1angegeben: Gibt es eine Möglichkeit, dies zu erreichen? ( --sort=namescheint 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
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.
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
LANG=C ls
LANGWenn 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", das C.UTF-8Gebietsschema verwenden (sofern Ihr System dies unterstützt) und / oder das -bFlag verwenden. Noch besser, überhaupt nicht verwenden ls, besser verwenden `
lssortiert Bindestriche vor Bindestrichen.
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.
-k9,9das
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.
HINWEIS: "a" kommt NACH "Z":
$ touch A.txt aa.txt Z.txt
$ ls
A.txt Z.txt aa.txt
normallö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:
ls -x1 file | sort -t'<char>' -n -k2
Beispiel:
ls -1 TRA*log | sort -t'_' -n -k2
TRACE_1.log
TRACE_2.log
TRACE_3.log
TRACE_4.log
TRACE_5.log
TRACE_6.log
TRACE_7.log
TRACE_8.log
TRACE_9.log
TRACE_10.log
Von der Manpage (für Bash ls):
Sortieren Sie Einträge alphabetisch, wenn weder -cftuSUX noch --sort vorhanden sind.
which lswürde gelingen, selbst wenn bash ein eingebautes ls hätte. Tun Sie es lieber builtin lsin Bash und erhalten Sie einen Fehler.
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).
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
Überprüfen Sie Ihre .bashrcDatei auf Aliase.
alias, um nach allen aktuellen Aliasen zu suchen.
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 --