grep:如何排除目录?

grep:如何排除目录?

当使用带有通配符的 grep 时,如下所示

grep -in github */*

每个目录grep显示很多消息,例如

grep: dir1/dir2: Is a directory

如何抑制这些消息?

令我惊讶的是,使用该标志--exclude-dir并不起作用。

我在 MacOS 上使用grep (BSD grep) 2.5.1-FreeBSD

答案1

-d skip将使 grep 跳过目录:

grep -in -d 跳过 github/

根据这个 MaxOS 手册页该选项应该适用于 MacOS grep。如果事实证明这不适用于 MacOS grep,您可以安装Homebrew MacOS 包管理器然后使用 Homebrew 安装GNU 版本的 grep,因为 GNU grep 支持-d skip(尽管在这种情况下,您必须将包含 GNU grep 的目录设置为PATH环境变量中的第一个)。

答案2

用于find寻找文件并grep克/重/p在文件内:

find . -mindepth 2 -maxdepth 2 -type f -exec grep -in github {} \;

每个工具的名称中都有关于其用途的重要线索:-)。

相关内容