如何删除"权限被拒绝"从这个输出?
$ du -ksh * | sort -n -r | grep -v "Permission denied"
du: cannot read directory `$Recycle.Bin/S-1-5-18': Permission denied
du: cannot read directory `$Recycle.Bin/S-1-5-21-1952864042-553127817-1365347855-1002': Permission denied
du: cannot read directory `$Recycle.Bin/S-1-5-21-1952864042-553127817-1365347855-500': Permission denied
du: cannot read directory `$Recycle.Bin/S-1-5-21-1995575548-1017590607-168656324-2178': Permission denied
我尝试了以下内容:
du -ksh * | sort -n -r | grep -v "Permission denied"
du -ksh * | sort -n -r 2>&1 | grep -v "Permission denied"
答案 0 :(得分:2)
如果我们消除du:
中的错误,我们可以从管道中消除grepdu -ks * 2>/dev/null | sort -n -r
删除grep的速度提高了一个数量级。同时删除du的-h开关将有助于数字排序做正确的事情并显示列表顶部的最大文件。
答案 1 :(得分:0)
你是对的,你将需要过滤stderr,而不是stdout(或在过滤之前将一个重定向到另一个)。但是,您似乎正在重定向sort的输出,而不是du。
答案 2 :(得分:0)
错误来自du
,而不是sort
,因此您需要重定向其stderr
。你应该在排序之前将它们过滤掉;它对结果没有影响,但排序很昂贵,所以你应该尽量减少它的输入。
du -ksh * 2>&1 | grep -v 'Permission denied' | sort -n -r