如何使用 find 选择具有一定磁盘空间使用量的用户?

sha*_*nuo 6 linux command-line find

我想找到/home/目录中显示的磁盘消耗超过500MB的所有用户。以下命令按预期工作。

cd /home/ && du */ -hs
68K     ajay/
902M    john/
250M    websites/
Run Code Online (Sandbox Code Playgroud)

从上面的例子中,只902M john/应该返回。

如何使find命令输出相同的结果?

Phi*_*ilR 0

您不能仅使用 find 来执行此操作,因为 find 作用于单个文件,并且没有累加文件大小的概念。您可以将 find 的输出通过管道传输到另一个工具中,但是既然 du 完成了大部分工作,为什么还要麻烦呢?

du -sm */ | sort -k1,1n | awk '$1 > 500 { sub(/$/, "M", $1); print $0 }'
Run Code Online (Sandbox Code Playgroud)

当输入中包含“人类可读”后缀时,awk 测试会变得混乱,因为您需要去掉尾随的“M”才能进行整数比较。对于输出,我个人会跳过“M”后缀,但这就是要求的。