使用终端查找文件夹内的文本

Pau*_*aul 15 macos terminal search grep

我试图在文件夹中找到一行代码并使用终端。我使用这个命令,我认为它应该可以工作:

MacBook-Pro:myWordpress myId$ grep "<?php get_template_part('loop', 'archives'); ?>" -R
Run Code Online (Sandbox Code Playgroud)

我正在检查的文件夹被称为“myWordpress”。但我明白了:

grep: warning: recursive search of stdin
Run Code Online (Sandbox Code Playgroud)

我不怎么使用终端,所以我不确定如何做我想做的事。任何帮助表示赞赏。谢谢

大卫

juz*_*aai 24

您还必须指定目录作为最后一个参数:

grep -r -F "string to search" /path/to/dir
Run Code Online (Sandbox Code Playgroud)

或者如果你想在当前目录中搜索,写.为目标目录:

grep -r -F "string to search" .
Run Code Online (Sandbox Code Playgroud)

如果不指定目录, grep将尝试在标准输入中搜索,但递归搜索在那里没有意义 - 这就是您收到警告的原因。

联机帮助页grep说:

并非所有 grep 实现都支持 -r,在支持的实现中,符号链接的行为可能有所不同。

在这种情况下,您可以尝试不同的方法,使用findxargs

 find /path/to/dir -name '*.*' -print0 | xargs -0r grep -F "string to search"
Run Code Online (Sandbox Code Playgroud)

同样,如果您想在当前目录中搜索,您可以将其写入.目录参数 (after find)。

编辑:正如@EdMorton 指出的,如果您想搜索简单文本而不是正则表达式,-F则需要该选项grep。我将它添加到我上面的示例中,因为您似乎正在尝试搜索可能包含特殊字符的 PHP 片段,这会导致在 regexp 模式下产生不同的输出。


Gay*_*ppu 5

对于 macOS,这将非常有用和简单,而且它还会突出显示文本的搜索结果匹配!

brew install ack 
ack "text"
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述