sort output by column
I’d like to take this command find -maxdepth 1 -type d | while read -r dir; do printf "%s:t" "$dir"; find "$dir" | wc -l; done
( from here ). which has an output of basically
./kennel: 11062
./shadow: 15449
./ccc: 9765
./journeyo: 14200
./norths: 10710
and sort it by the numbers largest to smallest. but I’m not sure how to make sort
, or whatever operate on a different column.
One option is to flip the columns:
$ find -maxdepth 1 -type d | while read -r dir; do printf "%dt%sn" "`find "$dir" | wc -l`" "$dir"; done
Then you get output like this:
17 .
1 ./acroread_1000_1002
1 ./.ICE-unix
2 ./.X11-unix
1 ./orbit-mrozekma
2 ./ns.mrozekma.:0
You can pipe that through sort -nr
to sort it the way you want. You can even pipe the sorted result through something like awk -F't' '{print $2 "t" $1}'
to flip the columns back if you need them in that order
Pipe the lines through sort -n -r -k2
.
Edited to sort from largest to smallest.