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


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.


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.