【发布时间】:2016-05-16 15:09:59
【问题描述】:
我想列出一个目录中所有子文件夹的大小。当我尝试
du -h --max-depth=1 输出中充斥着“权限被拒绝”这样的语句
du:无法读取目录`./folder_name':权限被拒绝
如何抑制这些警告?
我尝试了一种解决方法,将输出通过管道传送到 grep,如下所示
du -h --max-depth=1 | grep -v 'du:'
但这似乎也不起作用!
【问题讨论】:
我想列出一个目录中所有子文件夹的大小。当我尝试
du -h --max-depth=1 输出中充斥着“权限被拒绝”这样的语句
du:无法读取目录`./folder_name':权限被拒绝
如何抑制这些警告?
我尝试了一种解决方法,将输出通过管道传送到 grep,如下所示
du -h --max-depth=1 | grep -v 'du:'
但这似乎也不起作用!
【问题讨论】:
试试:
$ du -h --max-depth=1 2>/dev/null
这会将 stderr(文件句柄 2)重定向到 /dev/null,忽略任何错误消息。
【讨论】:
grep -v 不起作用有什么原因吗?
grep -v 'du:' 不起作用的原因是错误消息在 stderr 流上。在如图所示的管道中,它是从一个命令重定向到下一个命令的标准输出流,因此grep 命令永远不会看到错误消息。
du 的stderr 流重定向到stdout 来使 grep 命令工作。试试du -h --max-depth=1 2>&1 | grep -v 'du:'。祝你好运。