按列对输出进行排序

按列对输出进行排序

我想接受这个命令find -maxdepth 1 -type d | while read -r dir; do printf "%s:\t" "$dir"; find "$dir" | wc -l; done从这里)。其输出基本上为

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

并按数字从大到小排序。但我不确定如何制作sort或在不同的列上进行任何操作。

答案1

将管线穿过sort -n -r -k2.编辑为从大到小排序。

答案2

一种选择是翻转列:

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

然后你会得到这样的输出:

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

您可以通过管道将sort -nr其按照您想要的方式进行排序。awk -F'\t' '{print $2 "\t" $1}'如果您需要按顺序翻转列,您甚至可以通过管道传输排序结果

相关内容