【问题标题】:Searching for a file by content, may involve -exec command and piping 2>按内容搜索文件,可能涉及 -exec 命令和管道 2>
【发布时间】:2018-09-05 14:57:24
【问题描述】:

我目前正在通过沉浸式虚拟环境学习 Linux,并负责按内容查找文件。用户是root,所有的rwx权限(我相信777)。我尝试了很多事情都无济于事,但它们基本上都植根于

~$ find / -user root -perm 777 | grep "phrase to be found"

到目前为止,我已经成功检索到大量权限被拒绝的消息。我无法使用 sudo 命令,因为我没有 sudo 密码(虚拟环境)。可能需要使用执行标志和/或管道 2>,但我在玩这些方面并没有成功,希望有更好的敏锐度的人可以提供帮助。

【问题讨论】:

  • 从您下面的评论中我几乎完全早早地尝试过,但它没有产生任何结果。是的,我可以想象。我无法想象让root 拥有的任何文件拥有777 权限的好案例。因此,只需使用2> /dev/null 运行命令中的find 部分。您可能无法取回任何文件。也许你可以进去故意换一个?但真正的问题是,您需要xargs 来安排任何找到的文件作为 grep 的输入目标。在此处搜索 [bash] xargs 并查看这个非常有用的实用程序的许多示例。或阅读-exec 选项至find.GoodLuck

标签: linux find command exec stderr


【解决方案1】:

“权限被拒绝”消息由find 写入stderr,因此您可以通过将消息转发到/dev/null 来丢弃来自stderr 的消息。

find / -user root -perm 777 2> /dev/null | grep "phrase to be found"

应该可以,2> 是 stderr 的重定向。

【讨论】:

  • 这可能是由于这是一个虚拟环境,我相信我之前几乎完全尝试过,但它没有产生任何结果。
【解决方案2】:

正如shellter 指出的那样,在您的示例中,您要求 grep 针对文件名本身而不是这些文件的内容搜索短语。我认为您正在寻找的是:

grep -Rsl "phrase to be found" /

输出将是一个文件名列表,这些文件名的内容中某处有“要找到的短语”,但仅限于您有权读取的文件。要读取所有文件,您需要运行与 root 相同的命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    相关资源
    最近更新 更多