Command-Line

按列排序輸出

  • November 19, 2010

我想接受這個命令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,或者在不同的列上進行任何操作。

管道通過sort -n -r -k2。編輯為從大到小排序。

一種選擇是翻轉列:

$ 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}'如果您需要按順序將列翻轉回來,您甚至可以通過管道傳遞排序結果

引用自:https://unix.stackexchange.com/questions/4180