Php 如何从目录中递归找到的所有文件中搜索行匹配
使用linux命令,有没有办法知道哪个文件包含给定项目目录中的给定代码行 对于子目录中的所有文件,也会递归地跟踪所有目录 假设您的项目位于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
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(
)
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。