我正在我下面的目录树中搜索一个文件。当我尝试时find . -name xyz
,我得到了find: '/home/fred' : Permission denied
这是有道理的,因为我没有访问这些目录的权限。所以我尝试
find . -name xyz | grep -v Permission
Run Code Online (Sandbox Code Playgroud)
这应该删除我不想要的行。好吧,我和以前完全一样的屏幕。grep 什么都不做
这是怎么回事,我该如何解决?
“权限被拒绝”是一个警告,而不是您期望的那种数据find
。为了将错误消息与请求的用户数据分开,find
将文件名打印到其标准输出通道 1,并将警告打印到标准错误通道 2。这种行为在许多 unix 命令行工具中很常见。外壳通常显示两个通道。您可以通过明确地将错误流重定向到其他地方来避免它,例如由 表示的无效/dev/null
:
find . -name xyz 2>/dev/null
Run Code Online (Sandbox Code Playgroud)