ordenar salida por columna

13

Me gustaría tomar este comando find -maxdepth 1 -type d | while read -r dir; do printf "%s:\t" "$dir"; find "$dir" | wc -l; done( desde aquí ). que tiene una salida de básicamente

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

y ordénelo por los números de mayor a menor. pero no estoy seguro de cómo hacer sort, o lo que sea que opere en una columna diferente.

xenoterracida
fuente

Respuestas:

27

Conduce las líneas a través sort -n -r -k2. Editado para ordenar de mayor a menor.

W_Whalley
fuente
Lo probé y funciona a la perfección
Gert
3

Una opción es voltear las columnas:

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

Entonces obtienes resultados como este:

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

Puede canalizar eso sort -nrpara ordenarlo de la manera que desee. Incluso puede canalizar el resultado ordenado a través de algo como awk -F'\t' '{print $2 "\t" $1}'voltear las columnas si las necesita en ese orden

Michael Mrozek
fuente