我正在尝试评估一些 Unix 用户帐户的磁盘使用情况。简单地说,我正在使用以下命令:
du -cBM --max-depth=1 | sort -n
但是我看到了很多如下错误消息。如何从显示中排除所有此类“权限被拒绝”消息?
du: `./james/.gnome2': Permission denied
通过将“find”替换为“du”,我的请求可能与以下列表非常相似。
以下线程不起作用。我想我正在使用bash。
我正在尝试评估一些 Unix 用户帐户的磁盘使用情况。简单地说,我正在使用以下命令:
du -cBM --max-depth=1 | sort -n
但是我看到了很多如下错误消息。如何从显示中排除所有此类“权限被拒绝”消息?
du: `./james/.gnome2': Permission denied
通过将“find”替换为“du”,我的请求可能与以下列表非常相似。
以下线程不起作用。我想我正在使用bash。
du -cBM --max-depth=1 2>/dev/null | sort -n
或者在 bash 中更好(只是过滤掉这个特定的错误,而不是像最后一个片段一样)
du -cBM --max-depth=1 2> >(grep -v 'Permission denied') | sort -n
2> /dev/nul 仅隐藏错误消息。
命令 du 总是尝试遍历目录。想象一下,您有数千个目录?
du 需要 eval,如果您有权限运行,如果没有,请按照下一个目录...
我会使用一些简洁的东西,只排除你不想看到的行。将 stderr 重定向到 stdout,并用 grep 排除所有“拒绝”:
du -cBM --max-depth=1 2>&1 | grep -v 'denied' | sort -n
如果2>/dev/null
不起作用,可能您使用的 shell 不是bash
.
要检查您使用的外壳,您可以尝试ps -p $$
(请参阅https://askubuntu.com/a/590903/130162)
为了消除来自 du 命令的所有错误,我使用了这个:
du -sh 2>&1 | grep -v '^du:'
您可以将其通过管道传输到一个临时文件,例如 -
杜... > temp_file
错误会打印在终端上,只有磁盘使用信息会打印到 temp_file 中。