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] 举报,一经查实,本站将立刻删除。