index.php
我想找到所有包含字符串“hello”的文件的位置。
谢谢。
答案1
grep
与以下一起使用find
:
find /top-dir -type f -name index.php -exec grep -l 'hello' {} +
其中/top-dir
是您要搜索的最顶层目录的路径。
使用-type f
,我们只查看常规文件find
,并且-name index.php
我们将搜索限制为名为index.php
.
-exec grep -l 'hello' {} +
将在找到的文件上运行grep
,并将输出与模式 ( 'hello'
) 匹配的所有文件的路径。正是-l
withgrep
导致了路径的输出。
最后+
,find
将为每次调用提供尽可能多的文件grep
。将其更改为';'
或\;
会导致grep
一次调用一个文件,如果有很多文件,这可能会很慢。
答案2
在命令中使用grep
如下find
:
find -type f -name "index.php" -exec grep -q 'hello' '{}' \; -exec echo '{}' \;
答案3
如果您使用的是 bash shell,请启用该globstar
选项,以便**
在子目录中匹配,然后grep
像平常一样使用:
shopt -s globstar
grep -l hello **/index.php
shopt -s globstar
(您只需在 shell 中执行一次,除非您使用 禁用该选项shopt -u globstar
。)
答案4
另外2种命令方式find
:
find -type f -name "index.php" -exec grep -l 'hello' {} \;
find -type f -name "index.php" -exec grep -q 'hello' {} \; -print