iago-lito Asked: 2017-12-28 07:57:54 +0800 CST2017-12-28 07:57:54 +0800 CST 2017-12-28 07:57:54 +0800 CST 具有更细粒度的人类可读的“du” 772 我有时希望人类可读的du -h选项更加细粒度,同时仍然是人类可读的。 而不是显示: 14G 它会显示类似: 14G 236M 788k 110b 有没有简单/直接/标准的方法来获得这个? disk-usage output 1 个回答 Voted Best Answer iago-lito 2017-12-29T01:55:19+08:002017-12-29T01:55:19+08:00 好吧,似乎还没有简单/直接/标准的方法来做到这一点。 替代选项是(感谢 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因此您 的机器上的现在将实施此选项。makemake installdu 优点:非常简单,快速且集成。可以作为标准的未来补丁提供du吗? 缺点:您必须先了解现有C代码并理解它,以免破坏它。您必须在coreutils需要使用它的任何机器上重新安装您自己的版本。 现在,我不会很快进入这个。无论如何,请随时在此处发布您自己的解决方案或替代解决方法:)
好吧,似乎还没有简单/直接/标准的方法来做到这一点。
替代选项是(感谢 ridgy的、Carpette的、Weijun Zhou的和drl的评论 :):
在 bash/awk/python/等中编写一个专用的小型转换器实用程序,以便:
然后通过管道将其转换为
du
输出。你可以从这个相关的 问题中得到启发。如果它运行良好,它还可以解析任何通过管道传输给它的命令的输出,例如:您甚至可以在您的机器上将其永久别名为:
du -s
,du -hc
,du --si
)。必须解析任何命令输出 (ls -lah
,rsync
) 以查找表示字节的数字字符串,并在不破坏布局的情况下进行转换。进入
coreutils
源代码并添加适合您需求的新相关选项。你可能不得不看一眼./lib/human.c
. 然后一旦修改,这将是 , 的问题,./configure
因此您 的机器上的现在将实施此选项。make
make install
du
du
吗?C
代码并理解它,以免破坏它。您必须在coreutils
需要使用它的任何机器上重新安装您自己的版本。现在,我不会很快进入这个。无论如何,请随时在此处发布您自己的解决方案或替代解决方法:)