16

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.

2 Answers 2

36

Pipe the lines through sort -n -r -k2. Edited to sort from largest to smallest.

1
  • Tried it and works flawlessly
    – Gert
    Commented Nov 18, 2010 at 13:46
4

One option is to flip the columns:

$ find -maxdepth 1 -type d | while read -r dir; do printf "%d\t%s\n" "`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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .