我有时希望人类可读的du -h
选项更多细粒度的同时仍然是人类可读的。
而不是显示:
14G
它会显示如下内容:
14G 236M 788k 110b
有没有一种简单/直接/标准的方法来实现这个?
答案1
嗯,好像有不简单/直接/标准的方法来做到这一点。
替代选项是(学分隆起的的,地毯的,周伟军'沙博士升的评论:):
在 bash/awk/python/ 中编写一个专用的小型转换器实用程序ETC。以便:
$ 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
在需要使用它的任何计算机上重新安装您自己的版本。
- 优点:非常简单、快速且集成。可以作为未来的标准补丁提供吗
目前,我不会很快讨论这个问题。无论如何,请随时在此处发布您自己的解决方案或替代解决方法:)