我正在尝试评估一些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
答案 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 )