我想列出文件服务器中的目录磁盘使用情况。
我还想忽略错误消息。这是我的命令:

du -sh * | grep -v "Permission denied" | sort -n

结果仍然包含被拒绝的权限行:
du: cannot access './myFile1/': Permission denied
du: cannot access './myFile2/': Permission denied
du: cannot access './myFile3/': Permission denied

我做错什么了?

最佳答案

这是因为“拒绝权限”是通过标准错误发送的,而不是通过标准输出发送的。
如果不需要此信息,只需通过将stderr重定向到/dev/null使其静音:

du -sh * 2>/dev/null | sort -n

所有这些错误消息都会出现这种情况:
$ touch a
$ ls a asfasd
ls: cannot access asfasd: No such file or directory
a
$ ls a asfasd | grep cannot
ls: cannot access asfasd: No such file or directory
$ ls a asfasd 2>/dev/null
a

关于bash - 管道后如何使用invert grep?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33654501/

10-13 04:12