在 Linux(RHEL 6)上,列出给定文件系统上符合配额的所有文件和大小的最佳方法是什么?
我们有一个项目目录,我目前正在做的一切都很小,但我的配额已满,我想看看还有什么是我的,这样我就可以清理一下。
答案1
使用 时find
,您应该使用一种安全的方式,以处理文件名中可能出现的空格和其他奇怪符号。这应该可以做到(前提是您的find
和du
版本接受以下选项):
find . -type f -user "$USER" -print0 | du -ch --files0-from=-
(-c
选项是在最后得到一个不错的总数)。但这不会计算目录的大小。
如果在目录树中有一些您无法访问的目录,您的屏幕上可能会出现一些垃圾(权限被拒绝),因此您可能需要重定向stderr
到/dev/null
:
find . -type f -user "$USER" -print0 2>/dev/null | du -ch --files0-from=-
答案2
我可能只会根据用户名执行查找命令,我认为这就是他们计算配额的方式。
就像是:
#!/bin/bash
for i in `find . -type f -user $(whoami)`; do
du -h ${i}
done
这将以人类可读的格式列出 $(whoami) 拥有的所有文件及其文件大小。
不过,这个列表在我的系统上确实很长,所以我可能会建议将 stdout 输出到该文件(> output.txt
例如)或添加-maxdepth #
命令find
以将其限制在可管理的目录级别。