Vad*_*hin 18 linux bash grep find ubuntu
当我使用grepor 时find,我总是对“权限被拒绝”和“没有这样的文件或目录”通知感到恼火,如下所示:
johndoe@johndoe-desktop:/$ grep -rnP 'YII_CORE_PATH' ./ | grep -v .svn
grep: ./lib/ufw/user6.rules: Permission denied
grep: ./lib/ufw/user.rules: Permission denied
grep: ./lib/init/rw/udev/watch/27: No such file or directory
grep: ./lib/init/rw/udev/watch/26: No such file or directory
grep: ./lib/init/rw/udev/watch/25: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我怎样才能避免它们并使它只看到相关数据,即我真正在寻找的东西?
mat*_*hew 26
使用 grep,您可以指定 -s 标志,这与@ortang 所说的差不多
-s, --no-messages 抑制关于不存在或不可读文件的错误消息。可移植性说明:与 GNU grep 不同,第 7 版 Unix grep 不符合 POSIX,因为它缺少 -q 并且其 -s 选项的行为类似于 GNU grep 的 -q 选项。USG 风格的 grep 也没有 -q 但它的 -s 选项表现得像 GNU grep。可移植的 shell 脚本应该避免 -q 和 -s 并且应该将标准和错误输出重定向到 /dev/null。
据我所知,用 find 回答@ortangs 是最好的。就像是
find / -name "myfile" -type f -print 2>/dev/null
尝试重定向stderr到/dev/null.
johndoe@johndoe-desktop:/$ grep -rnP 'YII_CORE_PATH' ./ 2> /dev/null | grep -v .svn
Run Code Online (Sandbox Code Playgroud)
重定向strerr到/dev/null(又名black hole)是抑制权限被拒绝错误的好方法。
但是,请注意,此伤口不仅会抑制permission denied消息,还会抑制所有错误消息。
如果您确实希望保留除此之外的错误消息,permission denied您可以执行以下操作 -
grep -rnP 'YII_CORE_PATH' ./ 2>&1 | grep -v 'permission denied' > error.log
Run Code Online (Sandbox Code Playgroud)
如果您不想保留这些,那么以下内容就可以了-
grep -rnP 'YII_CORE_PATH' ./ 2> /dev/null | grep -v .svn
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29504 次 |
| 最近记录: |