按列排序输出


13

我想接受这个命令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,或在其他专栏中进行任何操作。

Answers:


27

用管道把线穿过sort -n -r -k2。编辑从最大到最小排序。


对其进行了尝试并且可以完美地工作
Gert

3

一种选择是翻转列:

$ 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}'来传递排序结果,例如,如果您需要按此顺序将它们翻转回去

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.