find . -name "*.PHP" | xargs grep -i -n "searchstring" >output.txt
匹配前的单词和行的grep
如何防止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] 举报,一经查实,本站将立刻删除。