urutkan output berdasarkan kolom


13

Saya ingin mengambil perintah ini find -maxdepth 1 -type d | while read -r dir; do printf "%s:\t" "$dir"; find "$dir" | wc -l; done( dari sini ). yang memiliki output pada dasarnya

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

dan urutkan berdasarkan angka terbesar hingga terkecil. tapi saya tidak yakin bagaimana cara membuatnya sort, atau apa pun yang beroperasi pada kolom yang berbeda.

Jawaban:


27

Pipa garis melalui sort -n -r -k2. Diedit untuk menyortir dari yang terbesar ke yang terkecil.


Mencobanya dan bekerja dengan sempurna
Gert

3

Salah satu opsi adalah membalik kolom:

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

Maka Anda mendapatkan output seperti ini:

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

Anda dapat menyalurkan melalui itu sort -nruntuk mengurutkannya seperti yang Anda inginkan. Anda bahkan dapat menyalurkan hasil yang diurutkan melalui sesuatu seperti awk -F'\t' '{print $2 "\t" $1}'membalik kolom kembali jika Anda membutuhkannya dalam urutan itu

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.