![列出大于 10G 的文件夹,并将使用情况发送给相应所有者](https://linux22.com/image/70654/%E5%88%97%E5%87%BA%E5%A4%A7%E4%BA%8E%2010G%20%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B9%EF%BC%8C%E5%B9%B6%E5%B0%86%E4%BD%BF%E7%94%A8%E6%83%85%E5%86%B5%E5%8F%91%E9%80%81%E7%BB%99%E7%9B%B8%E5%BA%94%E6%89%80%E6%9C%89%E8%80%85.png)
在我们的环境中,我们有一个 NFS 挂载,其中包含所有用户主目录。
我想找到主目录大小大于10G的用户并向他们发送通知。我试过:
du -sh * | sort -hr
这就像一个魅力,但我找不到提取大小> 10 G 的目录的命令。
我尝试过find . -size +10G -exec ls -lhS {} \;
,但没有成功。
查找/提取大小大于 10G 的目录的最佳方法是什么?
答案1
这应该可以做到。
其中第一列(大小)超过10gb,输出第二列(目录名称)
du -sk * | awk '$1 > 10485760 { print $2 }'
或者根据要求,以人类可读的形式显示,如下所示。正则表达式确保第 1 列以 G(千兆字节)结尾,并且 substr 部分从第 1 列中删除最后一个字母并查看它是否超过 10。
du -sh * | awk '$1 ~ /G$/ && substr($1,0,length($1)-1) > 10 { print $0 }'
例子:
du -sh *
2.5G steve
du -sh * | awk '$1 ~ /G$/ && substr($1,0,length($1)-1) > 1 { print $0 }'
2.5G steve
du -sh * | awk '$1 ~ /G$/ && substr($1,0,length($1)-1) > 3 { print $0 }'
(no output)