我使用以下内容在目录中的所有文件中搜索字符串。
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