从“du”中排除所有被拒绝的权限消息

时间:2013-02-28 17:13:13

标签: shell sorting warnings suppress-warnings du

我正在尝试评估一些Unix用户帐户的磁盘使用情况。 简单地说,我使用以下命令:

du -cBM --max-depth=1 | sort -n

但我看到很多错误信息,如下所示。如何从显示中排除所有此类“权限被拒绝”的消息?

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

5 个答案:

答案 0 :(得分:56)

du -cBM --max-depth=1 2>/dev/null | sort -n 

或更好的bash(只是过滤掉这个特定的错误,而不是像最后一个片段一样)

du -cBM --max-depth=1 2> >(grep -v 'Permission denied') | sort -n 

答案 1 :(得分:3)

2 - ; / dev / nul仅隐藏错误消息。

命令du总是尝试运行目录。想象一下,你有成千上万的dirs?

du需要eval,如果你有继续运行,请跟随下一个目录...

答案 2 :(得分:1)

您可以将其通过管道传输到临时文件,例如-

du ... >临时文件

错误将显示在终端上,并且只有磁盘使用情况信息会显示在temp_file中。

答案 3 :(得分:0)

我会使用一些简洁的东西,只排除你不想看到的线条。将stderr重定向到stdout,并将grep重定向到所有“被拒绝的”:

du -cBM --max-depth=1 2>&1 | grep -v 'denied' | sort -n 

答案 4 :(得分:0)

If 2>/dev/null does not work, probably the shell you are using is not bash.

To check what shell you are using, you may try ps -p $$ (see https://askubuntu.com/a/590903/130162 )