包含命令在OSX Zsh中不起作用
我正在关注如何在Linux上查找包含特定文本的所有文件? 在我的项目中搜索字符串。
  这是我的命令grep --include=*.rb -rnw . -e "pattern" grep --include=*.rb -rnw . -e "pattern" 
  Zsh告诉我, zsh: no matches found: --include=*.rb 
  看来grep不支持--include选项。 
  当我输入grep --help ,它会返回 
usage: grep [-abcDEFGHhIiJLlmnOoPqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
    [-e pattern] [-f file] [--binary-files=value] [--color=when]
    [--context[=num]] [--directories=action] [--label] [--line-buffered]
    [--null] [pattern] [file ...]
  没有--include这里。 
我的grep版本太旧了吗? 或者我的命令有问题吗?
  FreeBSD / OSX grep DOES支持--include选项(请参阅man grep ;不幸的是,命令行帮助不会列出此选项),但问题在于选项参数*.rb未加引号 。 
  因此,它是您的shell zsh尝试将路径名展开为--include=*.rb ,并且失败,因为当前目录不包含名称与--include=*.rb匹配的--include=*.rb 。 
  grep甚至不会执行。 
  由于您的意图是将*.rb未修改为grep ,因此您必须引用它 : 
grep --include='*.rb' -rnw . -e "pattern"     
  如果你的grep不支持--include ,并且你不想为此安装GNU grep ,有许多便携的方法可以执行相同的操作。  试试我的头顶 
find . -type f -name '*.rb' -exec grep -nw "pattern" /dev/null {} ;
  find命令遍历目录(例如grep -r )查找名为*.rb文件(如--include选项),而/dev/null非常有用,因为当您在多个文件上运行grep显示的输出格式略有不同。 
  这有点低效,因为它为每个文件运行一个单独的grep 。  如果速度太慢,请查看xargs (或使用find -exec ... {} +而不是... {} ;如果您的find支持)。  这是一项非常普遍的任务;  你应该很容易找到成千上万的例子。 
  您可能还需要考虑ack这是一个受欢迎的,有点更人性化的选择。  它是独立的,所以“安装”等于将它复制到你的$HOME/bin 。 
