Php 如何从目录中递归找到的所有文件中搜索行匹配

Php 如何从目录中递归找到的所有文件中搜索行匹配,php,linux,unix,search,ubuntu,Php,Linux,Unix,Search,Ubuntu,使用linux命令,有没有办法知道哪个文件包含给定项目目录中的给定代码行 对于子目录中的所有文件,也会递归地跟踪所有目录 假设您的项目位于php中,并且位于目录/var/www/projectDir/ 要搜索的行是公共函数getProjectData(知道在哪里(哪个文件位于哪个子目录中)getProjectDataphp函数被定义?使用命令 find /var/www/projectDir/ -name '*.php'|xargs grep 'public function getProje

使用linux命令,有没有办法知道哪个文件包含给定项目目录中的给定代码行

对于子目录中的所有文件,也会递归地跟踪所有目录

假设您的项目位于
php
中,并且位于目录
/var/www/projectDir/

要搜索的行是
公共函数getProjectData(
知道在哪里(哪个文件位于哪个子目录中)
getProjectData
php函数被定义?

使用命令

 find /var/www/projectDir/ -name '*.php'|xargs grep 'public function getProjectData('
第一部分

find /var/www/projectDir/ -name '*.php'
将在目录
/var/www/projectDir

第二部分

xargs grep 'public function getProjectData('
将在第一部分中找到的所有文件中搜索
公共函数getProjectData(

XARGS用于考虑第一部分的输出作为第二部分的标准输入。

名为
pipe
的符号
|
将通过管道将输出传输到第二部分

输出

/var/www/projectDir/sub/directory/somephpfile.php:    public function getProjectData($param1, $param2) {
现在,您可以打开文件并搜索使用定义内容的行

(ctrl + F for gedit) or ( ctrl + W for nano)

或者使用您最喜欢的编辑器。

您可以使用shell:

 grep "text string to search" directory-path -R   
编辑:为递归搜索添加
-R

或者更好地使用PHP:

$reflFunc = new ReflectionFunction('function_name');
print 'File :' $reflFunc->getFileName() . ' at line : ' . $reflFunc->getStartLine();`

我遵循下面的原则,它总是帮助我

find dirname -type f -print | xargs grep -i "pattern" > /tmp/samplefile

我知道这是一个老问题,目前大多数使用的IDE都提供这种功能,但当我开始学习编程时,我学到的第一件事就是使用:

grep -iRn "wanted string"
i:忽略模式和输入数据中的大小写差异

R:对于每个目录操作数,按照所有符号链接,递归读取并处理该目录中的所有文件

n:行号


更多信息-

作为知识共享,查找…'*php'-exec grep'公共函数'{}的时间更短+
grep-n…
会给你行号,但我没有用
grep
找到行号,这无助于解决问题。在ubuntu中,我收到错误消息,如/var/www/projectDir是一个目录
grep“要搜索的文本字符串”/var/www/projectDir/*-R
这一个有效。当提到
-R
时,我们是否真的需要在目录路径的末尾提到
/*
?/*包括基本文件夹中的所有文件。这是必需的。如果要在子文件夹中搜索,请添加-R。