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.
::
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
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
from coreutils
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 zwischen bar
und quux
in sortiert LANG=en_US
). Wenn Sie eine ASCIIbetical-Sortierung wünschen, verwenden Sie
LANG=C ls
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", das C.UTF-8
Gebietsschema verwenden (sofern Ihr System dies unterstützt) und / oder das -b
Flag verwenden. Noch besser, überhaupt nicht verwenden ls
, besser verwenden `
ls
sortiert 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 -l
wird 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,9
Sie also die Spalte 9
bis 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-case
den Befehl sort hinzu.
-k9,9
das
9
nach derselben Spalte zu sortieren 9
. Eine normale ls
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
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:
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 ls
würde gelingen, selbst wenn bash ein eingebautes ls hätte. Tun Sie es lieber builtin ls
in Bash und erhalten Sie einen Fehler.
which
immer einen Pfad zurück. Verwenden Sie type ls
diese Option , um zu bestimmen, was die Shell für integriert hält ls
(integriert, funktionsfähig, ausführbar).
Das ls
Dienstprogramm 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 .bashrc
Datei 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 --