如何在linux目录的全部内容中搜索单词

如何在linux目录的全部内容中搜索单词

需要在整个内容中搜索某些内容

我在尝试:

find . | xargs grep word

我收到错误:

xargs:未终止的引号

如何实现这一目标?

答案1

xargs期望输入采用其他命令无法生成的格式,因此很难有效使用。这里的问题是你有一个文件,其名称必须在输入时引用xargs(可能包含')。

如果您的 grep 支持-r-R选项进行递归搜索,请使用它。

grep -r word .

否则,使用 的-exec主要部分find。这是实现与 相同效果的常用方法xargs,但对文件名没有限制。合理的最新版本find允许您在对辅助命令的一次调用中对多个文件进行分组。传递/dev/nulltogrep确保它将在每个匹配项前面显示文件名,即使它碰巧在单个文件上调用。

find . -type f -exec grep word /dev/null {} +

旧版本find(在旧系统或 OpenBSD 上,或简化的实用程序,如 BusyBox)一次只能对一个文件调用辅助命令。

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

find和的某些版本xargs具有允许它们正确通信的扩展名,使用空字符分隔文件名,以便不需要引用。如今,只有 OpenBSD 有此功能,而没有-exec … {} +.

find . -type f -print0 | xargs -0 grep word /dev/null

答案2

我猜你的意思是第一个选项

grep 递归,用于搜索文件内的内容

grep -R "content_to_search" /path/to/directory

ls 递归,用于搜索匹配的文件

ls -lR | grep "your_search"

答案3

如果您有 GNU 工具(如果 Linux 标签准确的话您就可以这样做),那么您可以使用-print0-0来解决常见的引用问题:

find . -type f -print0 | xargs -0 grep word

答案4

在当前目录中您可以使用 grep:

 grep -irl root .

相关内容