Wie kann ich ls nach Eigentümer und Gruppe sortieren?

9

Wie kann ich Verzeichnisse mit ls auflisten und sie nach ihrem Besitzer und ihrer Gruppe sortieren?

AnnanFay
quelle

Antworten:

8

Versuche dies:

ls -l | awk '{print $3, $4, $8}' | sort

Der Benutzername, der Gruppenname und der Dateiname werden gedruckt, sofern der Dateiname keine Leerzeichen enthält. Alternativ können Sie Folgendes eingeben:

ls -l | awk '{print $3, $4, $0}' | sort

Dadurch werden der Benutzername, der Gruppenname und die vollständige ls -lAusgabe gedruckt , zuerst sortiert nach dem Benutzernamen, dann nach dem Gruppennamen und dann nach dem, was ls -lzuerst gedruckt wird.

Beachten Sie, dass abhängig von Ihrer Verteilung die tatsächlichen Spaltennummern unterschiedlich sein können. Ich habe meine in SUSE und Coreutils Version 5.2.1 ausprobiert.

Es gibt wahrscheinlich bessere, ausgefeiltere Lösungen, aber dies ist die einfachste und wird die meiste Zeit funktionieren.

petersohn
quelle
1
s / Zeilennummern / Spaltennummern /
Bis auf weiteres angehalten.
7

Wie Petersohn sagte, etwas Ähnliches wie:

  • ls -l | awk '{print $3, $4, $8, $0}' | sort | column -t
    fügte das $8und das column -tfür hübschen Druck hinzu

Oder noch besser:

  • ls -l | sort -k 3 - sortiert nach Eigentümer und sortiert standardmäßig das nächste Feld (Gruppe) und weiter
  • ls -l | sort -k 4,4 -k 3 - sortiert nach Gruppe und dann nach Eigentümer
  • ls -l | sort -k 3,3 -k 8 - Sortiert nach Eigentümer und dann nach Dateiname

Hinweis: Das Komma ist das Abschlussfeld. 3,3Beginnt und endet also bei Feld 3 und 3,5sortiert von Feld 3 bis 5.

vol7ron
quelle
Um nach Gruppe und dann nach Eigentümer zu sortieren, musste ich -b hinzufügen, um führende Leerzeichen zu ignorieren. Andernfalls würde die Liste nach der Zeichenfolgenlänge des Eigentümernamens sortiert.
Stefan Schmidt