เรียงลำดับผลลัพธ์ตามคอลัมน์


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อย่างไรหรืออะไรก็ตามที่ทำงานในคอลัมน์อื่น

คำตอบ:


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}'พลิกคอลัมน์กลับหากคุณต้องการในลำดับนั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.