Bash - 有没有办法在当前目录中搜索字符串(或模式)?

Bash - 有没有办法在当前目录中搜索字符串(或模式)?

可能重复:
在 Linux 中搜索文本模式
Bash:有没有办法在文件目录中搜索特定字符串?

假设我在包含一堆文件的某个目录中,并且我正在尝试查找包含字符串“string”的文件在其内容中。有办法吗?谢谢。

答案1

简单回答:

grep -l string *

将列出当前目录中包含字符串的所有文件细绳

如果您想在当前目录和任何子目录中的所有文件中查找字符串,请使用:

grep -rl string .

详细信息:
* 将匹配当前文件夹中的所有内容(以 . 开头的文件除外),理论上它还会匹配目录,尽管这通常并不重要。如果您真的想挑剔,可以像这样使用 find:

find . -type f -maxdepth 1 -exec grep -i string {} /dev/null \;

如果要查看当前文件夹及其子文件夹,请保留 -maxdepth 1,例如:

find . -type f -exec grep -i string {} /dev/null \;

{} 表示匹配的文件名,但要列出文件的名称,您还必须添加至少两个文件名,而提及 /dev/null 即可。您可以根据需要修改它以获得想要的结果。应该为您提供工作的基础。:)

答案2

以下是在当前目录及其所有子目录中执行此操作的一些方法。

如果您想要找到该文本的文件的名称:

find . -type f -exec grep -l 'string' {} \; 

如果您只想查看找到文本的行:

find . -type f -exec grep 'string' {} \; 

如果您希望查看被搜索的文件的名称,然后查看找到某些内容时的行内容:

find . -type f -print -exec grep 'string' {} \;

当然,这还可以进一步结合......

相关内容