Bash:找到Grep

Bash:找到Grep,bash,grep,find,Bash,Grep,Find,以下命令通过递归搜索当前目录和所有子目录来查找所有出现的“some string” grep -r -n 'some string' . 此命令递归搜索当前目录和所有子目录,并返回格式为*.axvw的所有文件 find . -name '*.axvw' 我想把这两个命令放在一起,通过递归搜索当前目录,但只查看以“axvw”结尾的文件,从而获得所有出现的“some string” 当我尝试运行以下命令时,未返回任何内容: find . -name '*js' | grep -n 'som

以下命令通过递归搜索当前目录和所有子目录来查找所有出现的“some string”

grep -r -n  'some string' .
此命令递归搜索当前目录和所有子目录,并返回格式为*.axvw的所有文件

find . -name '*.axvw' 
我想把这两个命令放在一起,通过递归搜索当前目录,但只查看以“axvw”结尾的文件,从而获得所有出现的“some string”

当我尝试运行以下命令时,未返回任何内容:

find . -name '*js' | grep -n  'some string'

我做错了什么?

您可以使用
查找
中的
-exec
选项:

find . -name '*.axvw' -exec grep -n 'some string' {} +
或者使用
xargs

find . -name '*.axvw' -print0 | xargs -0 grep -n 'some string'

find-名称'*js'-execgrep-n'某些字符串'{}\

我想应该有用

编辑:只是为了好玩,我相信你也可以使用双grep


find.|grep'some string'| grep js

请参见此处给出的答案:可能重复No,您建议的“double grep”没有帮助--它在两个阶段都将文件名变灰,而不是内容。
-exec grep-n'some string'{}+
将使
查找-exec
方法在性能上与xargs竞争,并保证在2006年POSIX规范中可用。