Disk-Usage

具有更細粒度的人類可讀的“du”

  • December 28, 2017

我有時希望人類可讀的du -h選項更加細粒度,同時仍然是人類可讀的。

而不是顯示:

14G

它會顯示類似:

14G 236M 788k 110b

有沒有簡單/直接/標準的方法來獲得這個?

好吧,似乎還沒有簡單/直接/標準的方法來做到這一點。

替代選項是(感謝 ridgy的、Carpette的、Weijun Zhou的和drl的評論 :):

  • 在 bash/awk/python/等中編寫一個專用的小型轉換器實用程序,以便:
$ echo "789456" | utility  
770K 976o

然後通過管道將其轉換為du輸出。你可以從這個相關的 問題中得到啟發。如果它執行良好,它還可以解析任何通過管道傳輸給它的命令的輸出,例如:

$ du -s | utility
$ ls -la | utility

您甚至可以在您的機器上將其永久別名為:

duH() du -s $@ | utility
  • **優點:**易於用您喜歡的任何語言編寫。
  • **缺點:**難以適應任何命令選項(du -s, du -hc, du --si)。必須解析任何命令輸出 ( ls -lah, rsync) 以查找表示字節的數字字元串,並在不破壞佈局的情況下進行轉換。
  • 進入coreutils原始碼並添加適合您需求的新相關選項。你可能不得不看一眼./lib/human.c. 然後一旦修改,這將是 , 的問題,./configure因此您 的機器上的現在將實施此選項。make``make install``du

    • **優點:**非常簡單,快速且集成。可以作為標準的未來更新檔提供du嗎?
    • **缺點:**您必須先了解現有C程式碼並理解它,以免破壞它。您必須在coreutils需要使用它的任何機器上重新安裝您自己的版本。

現在,我不會很快進入這個。無論如何,請隨時在此處發布您自己的解決方案或替代解決方法:)

引用自:https://unix.stackexchange.com/questions/413291