我如何告诉 grep 在我有权限的文件中搜索?

Nar*_*rek 1 permissions bash grep

当我打电话

cd /
grep -r "some_str" .
Run Code Online (Sandbox Code Playgroud)

然后我看到屏幕上打印了很多文件,在行尾我看到“:权限被拒绝”。我如何告诉 bash 只在我有权限的文件中搜索。这显然会比标准 grep 快。

gee*_*aur 10

使用find / -readable -print0 | xargs -0 grep -H "some_str"代替grep -r。(需要 GNU find,但它grep -r是 GNUish 所以我怀疑这不是问题。)

但实际上并不是“显而易见”它更快;grep -ropen()调用发现您无法读取它,而find版本必须stat()首先读取它,然后grep执行open()——对于不可读的文件,其中最昂贵的部分是内核将路径名转换为文件系统索引节点。(实际上,搜索可读文件将占用大量执行时间,否则,对于任何显着大小的文件。)很可能更快的方法只是附加2>/dev/null到 ,grep -r因此不会有任何时间丢失打印错误消息到慢速终端。