使用两种模式运行递归grep

时间:2017-05-22 18:06:02

标签: linux grep

如何使用此grep模式递归搜索目录?我需要将这两个文件放在文件串的同一行。我不断收到消息,这是一个目录。如何以递归方式搜索扩展名为.cfc的所有文件?

"<cffunction" and "inject="
grep -insR "<cffunction" | grep "inject=" /c/mydirectory/

2 个答案:

答案 0 :(得分:0)

你已经倒退了,你应该将你的文件搜索传递给第二个命令,如:

grep -nisr "inject=" /c/mydirectory | grep "<cffunction"

编辑:要排除某些目录并仅在*.cfc个文件中搜索,请使用:

grep -nisr --exclude-dir={/abs/dir/path,rel/dir/path} --include \*.cfc "inject=" /c/mydirectory | grep "<cffunction"

答案 1 :(得分:0)

使用findexec

find your_dir -name "*.cfc" -type f -exec grep -insE 'inject=.*<cffunction|<cffunction.*inject=' /dev/null {} +
  • find以递归方式找到您的* .cfc文件并将其输入grep,仅挑选常规文件(-type f
  • inject=.*<cffunction|<cffunction.*inject=捕获具有任何顺序的模式的行
  • {} +确保grep的每次调用都能达到ARG_MAX文件
  • {li> /dev/null grep参数确保输出的前缀为文件名,即使只有*.cfc个文件