我误读了这个问题并认为它问的是我一直需要的问题。我的问题略有不同:如何查找内容超过一定大小的目录。有没有什么 *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)并默认使用第一列(目录大小)。