在Linux命令行中使用find和grep搜索具有特定用户和文本内容的文件?
收藏

我试图找到一个属于特定用户的文件,该文件还包含一个特定的文本字符串。
例如,我想找到一个属于根用户的文件,其中包含文本“hello there”。
我知道我可以使用grep搜索文件中的文本,例如:

grep -irl "hello there" /directory1

而且,我知道我可以搜索具有特定扩展名的用户拥有的文件:
find -user root -name "*.txt"

有没有办法把这两个命令结合起来?


最佳答案:

使用所有匹配的文件调用grep一次:

find -user root -name "*.txt" -exec grep -il "hello there" {} +

或者为每个文件调用grep -q一次,并为匹配的文件调用-print
find -user root -name "*.txt" -exec grep -iq "hello there" {} \; -print

-exec可以用作测试,就像-user-name一样。如果命令成功,则-exec测试通过并调用-print

    公众号
    关注公众号订阅更多技术干货!