我使用以下命令列出目录中的 20 个大文件。但除了文件列表外,它还显示错误消息,例如没有权限。我尝试添加2> /dev/null
,但似乎不喜欢。
这是我正在使用的命令
find . -type f -printf "%s %p\n" | sort -nr | head -n 20
我可以知道如何避免所有错误消息并仅显示文件列表吗?
答案1
在 bash 中,2> /dev/null
实际上可以起作用,只要将其添加为 find 命令本身的一部分(即在管道之前)。
例如,这将有效:
find -type f -printf "%s %p\n" 2> /dev/null | sort -nr | head -n 20
使用 tcsh,没有直接的方法可以做同样的事情,但是人tcsh提到一种解决方法:
shell 目前无法在不重定向标准输出的情况下重定向诊断输出,但是'(命令 > 输出文件)>& 错误文件' 通常是一种可接受的解决方法。输出文件或者错误文件可能是“/dev/tty”以将输出发送到终端。
对于简单的 find 命令,结果如下:
(find > /dev/tty) >& /dev/null
与 bash 不同,使用管道时,必须将其放在> /dev/tty
最后一个管道之后,以避免不明确的输出重定向。错误信息。
这在 tcsh 中有效:
(find -type f -printf "%s %p\n" | sort -nr | head -n 20 > /dev/tty) >& /dev/null