微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux grep把输出写入到一个文件中

find . -name "*.PHP" | xargs grep -i -n "searchstring" >output.txt

在这里,我正在尝试将数据写入一个不存在的文件中。

如何search多个pdf文件内容并返回pdf的文件名?

匹配前的单词和行的grep

使用sed,line cuts来提取sql insert

如何防止grep打印尾随的换行符?

比较两个文件来匹配Linux中的单词

如何使用>>追加结果?

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的论点将只给你数字线,我怀疑这是你所需要的。

这样,你的最终代码将是

find . -name "*.PHP" | xargs grep -i "searchstring" >> output.txt

find . -name "*.PHP" -exec grep -i -n "function" {} ; >output.txt

但是你不知道它来自哪个文件。 你可能想要:

find . -name "*.PHP" -exec grep -i -Hn "function" {} ; >output.txt

代替。

我想你的PHP文件名中有空格。 如果你通过xargs把它们交给grep ,那么这个名字就会被拆分成不同的部分,而grep把这些部分解释为文件名,然后找不到。

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

find . -name "*.PHP" -print0 | xargs -0 grep -i -n "searchstring" > output.txt

尝试使用行缓冲

grep – 线缓冲

[编辑]

我在我的盒子上运行你的原始命令,它似乎工作正常,所以我不知道了。

对我看起来很好。 如果删除>output.txt会怎么样?

如果您正在搜索代码树,请考虑使用ack 。 要做到你在做什么,不管有没有空格的文件名,你会做:

ack --PHP -i searchstring > output.txt

我总是使用下面的命令。 它在控制台上显示输出,并创建文件

grep -r“要搜索的字符串”。 2>&1 | tee /your/path/to/file/filename.txt

检查可用的磁盘空间

$ df -Th

它可能没有足够的磁盘空间。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐