sắp xếp đầu ra theo cột


13

Tôi muốn nhận lệnh này find -maxdepth 1 -type d | while read -r dir; do printf "%s:\t" "$dir"; find "$dir" | wc -l; done( từ đây ). trong đó có một đầu ra về cơ bản

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

và sắp xếp nó theo các số lớn nhất đến nhỏ nhất. nhưng tôi không chắc làm thế nào để thực hiện sort, hoặc bất cứ điều gì hoạt động trên một cột khác.

Câu trả lời:


27

Đường ống qua sort -n -r -k2. Chỉnh sửa để sắp xếp từ lớn nhất đến nhỏ nhất.


Đã thử nó và hoạt động hoàn hảo
Gert

3

Một tùy chọn là lật các cột:

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

Sau đó, bạn nhận được đầu ra như thế này:

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

Bạn có thể dẫn nó qua sort -nrđể sắp xếp nó theo cách bạn muốn. Bạn thậm chí có thể dẫn kết quả đã được sắp xếp thông qua một cái gì đó như awk -F'\t' '{print $2 "\t" $1}'lật ngược các cột nếu bạn cần chúng theo thứ tự đó

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.