Ausgabe nach Spalte sortieren


13

Ich möchte diesen Befehl find -maxdepth 1 -type d | while read -r dir; do printf "%s:\t" "$dir"; find "$dir" | wc -l; done( von hier aus ) annehmen . das hat eine Ausgabe von im Grunde

./kennel:       11062
./shadow:       15449
./ccc:  9765
./journeyo:     14200
./norths:       10710

und sortiere es nach den größten bis kleinsten Zahlen. aber ich bin nicht sicher, wie ich es machen sortsoll oder was auch immer auf einer anderen Spalte arbeiten soll.

Antworten:


27

Leiten Sie die Leitungen durch sort -n -r -k2. Bearbeitet, um vom größten zum kleinsten zu sortieren.


Versuchte es und funktioniert einwandfrei
Gert

3

Eine Möglichkeit besteht darin, die Spalten umzudrehen:

$ find -maxdepth 1 -type d | while read -r dir; do printf "%d\t%s\n" "`find "$dir" | wc -l`" "$dir"; done

Dann erhalten Sie folgende Ausgabe:

17  .
1   ./acroread_1000_1002
1   ./.ICE-unix
2   ./.X11-unix
1   ./orbit-mrozekma
2   ./ns.mrozekma.:0

Sie können das durchleiten, sort -nrum es so zu sortieren, wie Sie es möchten. Sie können das sortierte Ergebnis sogar durch so etwas wie awk -F'\t' '{print $2 "\t" $1}'das Zurückblättern der Spalten leiten, wenn Sie sie in dieser Reihenfolge benötigen

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.