具有更细粒度的人类可读的“du”

具有更细粒度的人类可读的“du”

我有时希望人类可读的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 -sdu -hcdu --si)。任何命令输出 ( ls -lah, rsync) 都必须进行解析,以查找表示字节的数字字符串,并在不破坏布局的情况下进行转换。
  • 进入coreutils源代码并添加适合您需求的新相关选项。您可能需要看一眼./lib/human.c。然后一旦修改,这将是./configure,的问题makemake install因此 du您的计算机上现在将实现此选项。

    • 优点:非常简单、快速且集成。可以作为未来的标准补丁提供吗du
    • 缺点:您必须C首先了解现有代码并理解它,以免破坏它。您必须coreutils在需要使用它的任何计算机上重新安装您自己的版本。

目前,我不会很快讨论这个问题。无论如何,请随时在此处发布您自己的解决方案或替代解决方法:)

相关内容