Disk-Usage
為什麼排序 du -h 沒有按預期工作?
我正在嘗試使用人類可讀標誌對 du 命令的輸出進行排序,我得到的結果僅按忽略副檔名的數值排序(即 G、M、K …),而在刪除 -h 時標記結果是否符合預期。
:~/du_exmp$ du -h ./* | sort -n 1.0M ./file2.txt 2.0G ./file3.txt 52K ./file1.txt :~/du_exmp$ du ./* | sort -n 104 ./file1.txt 2048 ./file2.txt 4204192 ./file3.txt
問題的根源是什麼,如何解決?
試試
sort -h
。從手冊-h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G)
用於
sort --help
更好地了解命令選項。
問題是你所看到的是如何
sort -n
工作的。它只查看一行的初始前導數值(或更一般地說,如果您使用-k
,則為一個欄位)並對其進行排序。它根本不理解KMG
後綴,所以當它遇到它們時它只是停止尋找一個數字。最簡單的事情就是你在第二個例子中所做的:只使用
du
沒有-h
標誌並且sort
完全自然地工作。如果您真的想保留更易於閱讀的
du -h
輸出,則必須使用另一個中間管道階段將解碼後的數字添加到 的輸出中du
,然後對其進行排序,然後可選擇刪除排序鍵,以便輸出看起來像那樣從du
。另一種選擇是使用 plain
du
,像在第二個範例中那樣對輸出進行排序,然後將該輸出通過管道傳輸到另一個階段以對純整數進行編碼du -h
。傳統上,您會使用
awk
最後兩個想法,但perl
orpython
也可以。