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

Wen*_*CSE 39 sorting shell warnings suppress-warnings du

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

du -cBM --max-depth=1 | sort -n
Run Code Online (Sandbox Code Playgroud)

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

du: `./james/.gnome2': Permission denied
Run Code Online (Sandbox Code Playgroud)

通过将"find"替换为"du",我的请求可能与以下列表非常相似.

如何从"查找"中排除所有"权限被拒绝"的消息?

以下线程不起作用.我想我正在使用bash.

使用--exclude,grep -v或sed从du命令输出中排除隐藏文件

Mev*_*pek 60

du -cBM --max-depth=1 2>/dev/null | sort -n 
Run Code Online (Sandbox Code Playgroud)

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

du -cBM --max-depth=1 2> >(grep -v 'Permission denied') | sort -n 
Run Code Online (Sandbox Code Playgroud)


KZi*_*vas 11

为了消除来自 du 命令的所有错误,我使用了以下命令:

du -sh 2>&1 | grep -v  '^du:'
Run Code Online (Sandbox Code Playgroud)


小智 9

我会使用一些简洁的内容,仅排除您不想看到的行。将 stderr 重定向到 stdout,并使用 grep 排除所有“拒绝”:

du -cBM --max-depth=1 2>&1 | grep -v 'denied' | sort -n 
Run Code Online (Sandbox Code Playgroud)


小智 6

2> /dev/nul 只隐藏错误信息。

命令 du 总是尝试在目录上运行。想象一下,您有数千个目录?

du 需要 eval,如果您有权限运行,如果没有,请跟随下一个目录...