trier la sortie par colonne

13

Je voudrais prendre cette commande find -maxdepth 1 -type d | while read -r dir; do printf "%s:\t" "$dir"; find "$dir" | wc -l; done( d'ici ). qui a une sortie de essentiellement

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

et triez-le par le plus grand au plus petit. mais je ne sais pas comment faire sort, ou quoi que ce soit opérer sur une autre colonne.

xénoterracide
la source

Réponses:

27

Faites passer les lignes sort -n -r -k2. Modifié pour trier du plus grand au plus petit.

W_Whalley
la source
Je l'ai essayé et fonctionne parfaitement
Gert
3

Une option consiste à inverser les colonnes:

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

Ensuite, vous obtenez une sortie comme celle-ci:

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

Vous pouvez le canaliser sort -nrpour le trier comme vous le souhaitez. Vous pouvez même diriger le résultat trié à travers quelque chose comme awk -F'\t' '{print $2 "\t" $1}'retourner les colonnes si vous en avez besoin dans cet ordre

Michael Mrozek
la source