我试图评估一些Unix用户帐户的磁盘使用情况。简单地说,我使用以下命令:
du -cBM --max-depth=1 | sort -n
但是我看到了很多像下面这样的错误信息。我如何从显示中排除所有此类“Permission denied”消息?
du: `./james/.gnome2': Permission denied
我的请求可能与下面的列表非常相似,只是将“find”替换为“du”。
How can I exclude all "permission denied" messages from "find"?
以下线程不工作。我用bash。
Excluding hidden files from du command output with --exclude, grep -v or sed
7条答案
按热度按时间s4n0splo1#
或者在bash中更好(只是过滤掉这个特定的错误,而不是像最后一个片段那样)
dxpyg8gm2#
为了删除所有来自du命令的错误,我使用了以下命令:
jm2pwxwz3#
2> /dev/null只隐藏错误消息。
命令du总是尝试在目录上运行。想象一下,你有成千上万的目录?
你需要评估,如果你有permission运行如果没有,按照下一个目录。
dxpyg8gm4#
我会用一些简洁的东西,只排除你不想看到的线条。将stderr重定向到stdout,并使用grep排除所有“denied“:
lztngnrs5#
如果
2>/dev/null
不工作,可能您正在使用的shell不是bash
。要检查您正在使用的shell,您可以尝试
ps -p $$
(请参阅https://askubuntu.com/a/590903/130162)uujelgoq6#
你可以把它放到一个临时文件里,比如-
du ...> temp_file
错误会打印在终端上,只有磁盘使用信息会打印到temp_file中。
7lrncoxx7#
另一种选择:
替代我喜欢更多和使用,只是显示顶级目录和人类二进制前缀(虽然不是一个真实的排序):
输出示例:
相反,如果你想要一个真实的排序(但不太可读),试试:
输出示例: