查找文件读取它并搜索特定标识符

查找文件读取它并搜索特定标识符

我试图找出哪些文件中使用了一些特定的标识符。我知道文件的名称并知道标识符,因此我使用以下命令来实现我想要的结果:

find ./ -name "configuration.php" -print | xargs cat | grep db_userXYZ

唯一的问题是,我丢失了文件名。我看到它db_userXYZ正在某处使用,但是上面的命令没有告诉我在哪个文件中。输出将类似于:

$this->db_user = 'db_userXYZ';
$this->db_name = 'db_XYZ';

有什么建议么?

答案1

尝试:

find ./ -name "configuration.php" -exec grep db_userXYZ /dev/null {} +

POSIX 定义寻找 -exec utility_name [argument ...] {} +:

如果主表达式用加号标点,则主表达式应始终评估为 true,并且评估主表达式的路径名应聚合到集合中。对于每组聚合路径名,应调用一次实用程序 utility_name。每次调用应在集合中的最后一个路径名聚合之后开始,并应在 find 实用程序退出之前以及为此主聚合下一个集合中的第一个路径名(如果有)之前完成,但未指定调用是否发生在其他初选评估之前、期间或之后。如果任何调用返回非零值作为退出状态,则 find 实用程序应返回非零退出状态。仅包含两个字符“{}”的参数应替换为聚合路径名集,每个路径名按照聚合顺序作为单独的参数传递给调用的实用程序。任何两个或多个路径名集合的大小均应受到限制,以便实用程序的执行不会导致超出系统的 {ARG_MAX} 限制。如果存在多个仅包含两个字符“{}”的参数,则行为未指定。

如果您的grep支持-H选项(-H不是由POSIX grep), 您可以使用:

find ./ -name "configuration.php" -exec grep -H db_userXYZ {} +

相关内容