ordenar saída por coluna

11

Gostaria de receber este comando find -maxdepth 1 -type d | while read -r dir; do printf "%s:\t" "$dir"; find "$dir" | wc -l; done ( aqui ). que tem uma saída basicamente

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

e classificá-lo pelos números maiores a menores. mas não sei como fazer sort ou o que quer que funcione em uma coluna diferente.

    
por xenoterracide 18.11.2010 / 10:48

2 respostas

24

Canalize as linhas em sort -n -r -k2 . Editado para classificar de maior para menor.

    
por 18.11.2010 / 14:08
2

Uma opção é inverter as colunas:

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

Então você recebe uma saída assim:

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

Você pode canalizar isso por meio de sort -nr para classificá-lo da maneira que quiser. Você pode até mesmo canalizar o resultado classificado por meio de algo como awk -F'\t' '{print $2 "\t" $1}' para inverter as colunas se você precisar delas nessa ordem

    
por 18.11.2010 / 11:19