人が読めるサイズで並べ替える方法

人が読めるサイズで並べ替える方法

デフォルトでは、ファイルを見つけてサイズでソートします。人間が読めるサイズにサイズをソートしないと、スクリプトは機能します。しかし、私は人が読めるサイズを望んでいます。人が読めるサイズをソートする方法は?

たとえば、

 ls -l | sort -k 5 -n | awk '{print $9 " " $5}'

これは期待どおりに機能し、私のファイルサイズは昇順のバイト順です。

1.txt 1
test.txt 3
bash.sh* 573
DocGeneration.txt 1131
andres_stuff.txt 1465
Branches.xlsx 15087
foo 23735
bar 60566
2016_stuff.pdf 996850

これで人間が読めるサイズが欲しいので、lsに-hパラメータを追加しましたが、一部のファイルの順序が正しくありません。

 ls -lh | sort -k 5 -n | awk '{print $9 " " $5}'
1.txt 1
DocGeneration.txt 1.2K
andres_stuff.txt 1.5K
test.txt 3
Branches.xlsx 15K
foo 24K
bar 60K
bash.sh* 573
2016_stuff.pdf 974K

ベストアンサー1

努力するsort -h k2

-h, --human-numeric-sort 人間が読める数字を比較します (例: 2K 1G)

Gnuソート、BSDソートなどの一部です。

おすすめ記事