使用linux命令,有没有办法知道哪个文件具有给定项目目录中的给定代码行?
对子目录中的所有文件也会递归跟踪所有目录。
说您的项目位于php
并位于目录/var/www/projectDir/
并且要搜索的行是public function getProjectData(
以了解哪里(在哪个文件中位于哪个子目录中)getProjectData
定义了php函数?
答案 0 :(得分:1)
你可以使用shell:
grep "text string to search" directory-path -R
编辑:为递归搜索添加-R
甚至更好,使用PHP:
$reflFunc = new ReflectionFunction('function_name');
print 'File :' $reflFunc->getFileName() . ' at line : ' . $reflFunc->getStartLine();`
答案 1 :(得分:0)
使用命令
find /var/www/projectDir/ -name '*.php'|xargs grep 'public function getProjectData('
第一部分
find /var/www/projectDir/ -name '*.php'
将搜索所有具有扩展名php
且位于目录/var/www/projectDir
第二部分
xargs grep 'public function getProjectData('
将搜索public function getProjectData(
的第一部分中找到的所有文件。
xargs用于将第一部分的输出视为第二部分的标准输入。
名为|
的符号pipe
会将输出传输到第二部分
输出
/var/www/projectDir/sub/directory/somephpfile.php: public function getProjectData($param1, $param2) {
现在您可以打开文件并使用
搜索内容定义的行(ctrl + F for gedit) or ( ctrl + W for nano)
或使用您喜欢的任何编辑器。
答案 2 :(得分:0)
我选择以下行。它总能帮到我,
find dirname -type f -print | xargs grep -i "pattern" > /tmp/samplefile
答案 3 :(得分:0)
我知道这是一个老问题,当前使用最多的IDE提供了这样的功能,但是当我开始学习编程时,我学到的第一件事就是使用:
grep -iRn "wanted string"
i :忽略模式和输入数据中的大小写区别
R :对于每个目录操作数,遵循所有符号链接,递归地读取和处理该目录中的所有文件。
n :行号
更多信息-see this