代码之家  ›  专栏  ›  技术社区  ›  Eliot

在Mac OS 10.6上获得分类、可读的du输出,最有效的方法是什么?[关闭]

  •  4
  • Eliot  · 技术社区  · 16 年前

    我曾经给du取了一个可爱的别名dusort,它可以打印出一个人类可读的列表,列出顶层子目录的大小+按大小排序的文件。它就像一个在终端上运行的mac迷你文件灯。

    这是一个有点模糊的旧别名,因为它必须运行du两次才能获得机器可读和人类可读的文件大小(实际上,我将其保存为~/bin中的一个脚本,其中有一个#!/bin/bash但这不重要):

    有什么想法吗 A、 让它重新工作? B、 使用bash向导使这个命令更加优雅?

    我知道我可以通过将du输出复制到临时文件或fifo或诸如此类的废话来解决这个问题,但这越来越荒谬了。我决定到这里来寻求帮助来改掉我那无聊的狂欢习惯。请告知。:)

    sort <(paste <(du -d1|cut -f1) <(du -hd1))|cut -f2,3
    

    不过,看起来像是一个巨大的混乱,尤其是给du打两次电话,在一个大文件树上,这可能会造成5分钟到10分钟之间的差异。。。有什么关于清理的建议吗?

    2 回复  |  直到 13 年前
        1
  •  1
  •   danio Kouga    16 年前

    我在redhatlinux上使用它,也许它也能在BSD上工作?:

    du -sk * | sort -n | awk '
    { if ($1 < 1024) { output("K", 1) }
      else if ($1 < 1048576) { output("M", 1024) }
      else { output("G", 1048576) }
    }
    
    function output(size, div)
    {
      printf "%d%s\t%s\n", ($1/div), size, $2
    }
    '
    

    或要设置为别名,需要引用以下内容:

    alias dusort='du -sk * | sort -n | awk '\''
    { if ($1 < 1024) { output("K", 1) }
      else if ($1 < 1048576) { output("M", 1024) }
      else { output("G", 1048576) }
    }
    function output(size, div)
    {
      printf "%d%s\t%s\n", ($1/div), size, $2
    }
    '\'''
    

        2
  •  -1
  •   DrSkippy    14 年前
    alias dsize='for dir in *; do du -skh $dir; done | sort -n'
    

    输出如下(其中 数据 , 图像 和 是目录):

    $ dsize
    1.9G     data
    4.0K     getLinkMentionCounts.bash
    4.0K     img
    28K      util