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.

Réponses:


27

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


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.