目录超出一定大小?

目录超出一定大小?

我误读了这个问题并认为它问的是我一直需要的问题。我的问题略有不同:如何查找内容超过一定大小的目录。有没有什么 *nix 方法可以做到这一点?

答案1

find不查看子目录的累计大小。相反,使用du选项-s告诉它仅打印命令行中给出的每个目录的总大小:

du -s *|awk '{ if ($1 > 3000) print }'

将会输出如下内容:

3124    foo
10025   bar

或者,只打印名称:

du -s *|awk '{ if ($1 > 3000) print $2 }'

答案2

是否find . -type d -size +3k -print按您的要求执行?当然,将“3k”更改为您想要的任何大小。

答案3

对 Peter Westlake 的回答进行几点扩展:

  • --max-depth 选项可用于限制 du 将搜索的子目录的深度。在下面的示例中,搜索为 2 级。

  • 您可以使用 du 的 -B 选项来设置 du 输出的块大小。在下面的示例中,目录大小为千字节(此处为 1000 字节)。目前,您可能能够使用 -k(千字节)和 -m(兆字节)选项,但 man 告诉我它们已被弃用,因此我建议您避免使用它们。(否则,您最终可能会陷入我可能遇到的境地 - 习惯使用它们,当它们消失时会感到沮丧!)

    $ du --max-depth=2 -B 1000 | awk'{if($1>=5)打印$0};'

还有一点:如果您希望按目录大小对输出进行排序,请通过 sort -n 进行管道传输,它将按数字顺序对输出进行排序(-n)并默认使用第一列(目录大小)。

相关内容