如何消除在 Linux 中运行 find 命令时的错误?

如何消除在 Linux 中运行 find 命令时的错误?

我使用以下命令列出目录中的 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

相关内容