find . -name "*.php" | xargs grep -i -n "searchstring" >output.txt在这里,我试图将数据写入到一个文件中,但这并没有发生……
发布于 2010-12-21 18:10:01
使用>>追加结果怎么样?
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发布于 2010-12-21 18:10:22
find . -name "*.php" -exec grep -i -n "function" {} \; >output.txt但你不会知道它是从哪个文件来的。您可能需要:
find . -name "*.php" -exec grep -i -Hn "function" {} \; >output.txt而不是。
发布于 2010-12-21 18:39:12
我猜你在php文件名中有空格。如果您像这样通过xargs将它们传递给grep,这些名称就会被分成几个部分,grep会将这些部分解释为文件名,然后就找不到了。
对此有一个解决方案。find有一个-print0选项,指示find用NUL字节分隔结果;xargs有一个-0选项,指示xargs使用NUL字节作为分隔符。使用你得到的:
find . -name "*.php" -print0 | xargs -0 grep -i -n "searchstring" > output.txthttps://stackoverflow.com/questions/4498061
复制相似问题