FreeBSD 标志用于在文件中搜索字符串时忽略权限错误

FreeBSD 标志用于在文件中搜索字符串时忽略权限错误

我使用以下内容在目录中的所有文件中搜索字符串。

grep -Flr --include "*" 'mystring' /modules/

运行起来非常顺畅,并返回包含字符串的文件。但是,我还得到了一个带有权限被拒绝的文件列表,这意味着查找结果会更困难一些。

是否有一个标志可以传递给命令以忽略输出权限被拒绝的错误。

谢谢

答案1

我通常只使用:

grep -Flr --include "*" 'mystring' /modules/ 2>/dev/null

这将丢弃所有输出到标准错误,前提是你的 shell 允许2>标准错误重定向。如果没有,请参阅这里

如果(正如您在评论中指出的那样),您的 grep 版本将其错误输出到标准输出而不是标准错误,则可以使用以下命令过滤该输出:

grep -Flr --include "*" 'mystring' /modules/ | egrep -v 'Permission denied|ERROR'

这将根据您认为必要的模式丢弃线条。

答案2

如果您使用 BSD grep,请使用标志-s

grep -Flrs --include "*" 'mystring' /modules/

此外,我认为您可以删除,因为如果您使用或--include "*",BSD grep 默认会读取目录并对其进行递归。-r-R

相关内容