我需要隐藏所有被拒绝的消息:

find . > files_and_folders

当这样的信息出现时,我正在做实验。我需要收集所有的文件夹和文件,它没有出现。

是否可以将权限级别直接指向files_and_folders文件?

如何同时隐藏错误?


当前回答

我不得不使用:

find / -name expect 2>/dev/null

指定我想要查找的名称,然后告诉它将所有错误重定向到/dev/null

expect是我正在搜索的expect程序的位置。

其他回答

您还可以使用-perm和-prune谓词来避免下降到不可读的目录(参见如何从查找程序中删除“拒绝权限”打印输出语句?- Unix和Linux Stack Exchange):

find . -type d ! -perm -g+r,u+r,o+r -prune -o -print > files_and_folders

您可以使用grep -v逆匹配

-v, --invert-match        select non-matching lines

是这样的:

find . > files_and_folders
cat files_and_folders | grep -v "permission denied" > files_and_folders

应该有魔力

为了在整个文件系统中搜索某些文件,例如主机,除了会导致各种错误的/proc树,我使用以下方法:

# find / -path /proc ! -prune -o -name hosts -type f
/etc/hosts

注意:因为-prune始终为真,所以必须对其求反,以避免在输出中看到行/proc。我试过了!-readable方法,并发现它返回/proc下当前用户可以读取的所有内容。所以"OR"条件并不是你所期望的。

我从find手册页给出的示例开始,参见-prune选项。

重定向标准错误。例如,如果你在unix机器上使用bash,你可以像这样将标准错误重定向到/dev/null:

find . 2>/dev/null >files_and_folders

use

sudo find / -name file.txt

这很愚蠢(因为你提升了搜索),也不安全,但写起来要短得多。