sortuj dane wyjściowe według kolumny

13

Chciałbym wziąć to polecenie find -maxdepth 1 -type d | while read -r dir; do printf "%s:\t" "$dir"; find "$dir" | wc -l; done( stąd ). który ma w zasadzie wynik

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

i posortuj według liczb od największej do najmniejszej. ale nie jestem pewien, jak to zrobić sort, czy cokolwiek innego działać w innej kolumnie.

ksenoterracid
źródło

Odpowiedzi:

27

Przeciągnij linie sort -n -r -k2. Edytowane w celu sortowania od największego do najmniejszego.

W_Whalley
źródło
Próbowałem i działa bezbłędnie
Gert
3

Jedną z opcji jest odwrócenie kolumn:

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

Następnie otrzymujesz dane wyjściowe w następujący sposób:

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

Możesz to przepuścić, sort -nraby posortować według własnego uznania. Możesz nawet przesunąć posortowany wynik przez coś w rodzaju awk -F'\t' '{print $2 "\t" $1}'odwrócenia kolumn, jeśli potrzebujesz ich w tej kolejności

Michał Mrożek
źródło