首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否将grep的输出写入Linux上的文件?

是否将grep的输出写入Linux上的文件?
EN

Stack Overflow用户
提问于 2010-12-21 18:03:44
回答 8查看 63.6K关注 0票数 9
代码语言:javascript
运行
复制
find . -name "*.php" | xargs grep -i -n "searchstring" >output.txt

在这里,我试图将数据写入到一个文件中,但这并没有发生……

EN

回答 8

Stack Overflow用户

发布于 2010-12-21 18:10:01

使用>>追加结果怎么样?

代码语言:javascript
运行
复制
find . -name "*.php" | xargs grep -i -n "searchstring" >> output.txt

我现在没有Linux机器,所以我会试着提供。

xargs grep -i -n "searchstring"让我有点困扰。

也许你指的是xargs -I {} grep -i "searchstring" {},或者仅仅是xargs grep -i "searchstring"

由于-n作为grep的参数只能给出数字行,我怀疑这是否是您所需要的。

这样,您的最终代码将是

代码语言:javascript
运行
复制
find . -name "*.php" | xargs grep -i "searchstring" >> output.txt
票数 10
EN

Stack Overflow用户

发布于 2010-12-21 18:10:22

代码语言:javascript
运行
复制
find . -name "*.php" -exec grep -i -n "function" {} \;  >output.txt

但你不会知道它是从哪个文件来的。您可能需要:

代码语言:javascript
运行
复制
find . -name "*.php" -exec grep -i -Hn "function" {} \;  >output.txt

而不是。

票数 2
EN

Stack Overflow用户

发布于 2010-12-21 18:39:12

我猜你在php文件名中有空格。如果您像这样通过xargs将它们传递给grep,这些名称就会被分成几个部分,grep会将这些部分解释为文件名,然后就找不到了。

对此有一个解决方案。find有一个-print0选项,指示find用NUL字节分隔结果;xargs有一个-0选项,指示xargs使用NUL字节作为分隔符。使用你得到的:

代码语言:javascript
运行
复制
find . -name "*.php" -print0 | xargs -0 grep -i -n "searchstring" > output.txt
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4498061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档