列で出力を並べ替える

列で出力を並べ替える

私はこのコマンドを受け入れたいです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

Editを介してパイプラインを渡し、sort -n -r -k2最大から最小までソートします。

答え2

1つのオプションは、列を反転することです。

$ 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}'列を順番に反転する必要がある場合は、ソートされた結果をパイプすることもできます。

関連情報