it-swarm.com.de

Unix 'ls' sortiert nach Namen

Können Sie eine ls Auflistung nach Namen sortieren?

112
Devang Kamdar

Mein ls sortiert standardmäßig nach Namen. Was siehst du?

man ls Gibt an:

List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.:

120
Evert

Für etwas Einfaches können Sie ls mit sort kombinieren. Nur eine Liste von Dateinamen:
ls -1 | sort

So sortieren Sie sie in umgekehrter Reihenfolge:
ls -1 | sort -r

97
Mark

ls from coreutils führt standardmäßig eine locale-aware Sortierung durch und kann daher in einigen Fällen zu überraschenden Ergebnissen führen (z. B. %foo sortiert zwischen bar und quux in LANG=en_US). Wenn Sie eine ASCII-Sortierung wünschen, verwenden Sie

LANG=C ls
31
Richard Smith

Das Schöne an * nix-Tools ist, dass Sie sie kombinieren können:

ls -l | sort -k9,9

Die Ausgabe von ls -l Sieht folgendermaßen aus

-rw-rw-r-- 1 luckydonald luckydonald  532 Feb 21  2017 Makefile
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt

Mit 9,9 Sortieren Sie die Spalte 9 Bis zur Spalte 9, Die die Dateinamen darstellt. Sie müssen angeben, wo Sie anhalten sollen. In diesem Fall handelt es sich um dieselbe Spalte. Die Spalten beginnen mit 1.

Wenn Sie Groß-/Kleinschreibung ignorieren möchten, fügen Sie dem Sortierbefehl --ignore-case Hinzu.

17
user491575

HINWEIS: "a" kommt NACH "Z":

$ A.txt aa.txt Z.txt antippen

$ ls

A.txt Z.txt aa.txt

8
russian_spy

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
5
poney

Aus der Manpage (für bash ls):

Einträge alphabetisch sortieren, wenn weder -cftuSUX noch --sort.

4
jwoolard

Überprüfe dein .bashrc Datei für Aliase.

3
Sujit

Das Dienstprogramm ls sollte dem IEEE-Standard 1003.1-2001 ( POSIX.1 ) der besagt:

22027: Verzeichnis- und Nicht-Verzeichnis-Operanden werden getrennt nach der Sortierreihenfolge im aktuellen Gebietsschema sortiert.

26027: Standardmäßig ist das Format nicht angegeben, aber die Ausgabe soll alphabetisch nach Symbolname sortiert werden:

  • Bibliotheks- oder Objektname, wenn −A angegeben ist
  • Symbolname
  • Symboltyp
  • Wert des Symbols
  • Die dem Symbol zugeordnete Größe, falls zutreffend
3
kenorb

ls -X funktioniert für diesen Zweck, falls Sie ls auf eine nützlichere Standardeinstellung eingestellt haben.

2
jezzo
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 --
0
James T