grep with –include和–exclude

我想在app目录中搜索字符串foo,但不包括文件名中包含迁移的任何文件.我希望这个grep命令能够工作

grep -Ir --include "*.py" --exclude "*migrations*" foo app/

上面的命令似乎忽略了–exclude过滤器.作为替代方案,我可以做到

grep -Ir --include "*.py" foo app/ | grep -v migrations

这样做有效,但是在结果中失去foo的突出显示.我也可以将混音带入并保持突出显示.

find app/ -name "*.py" -print0 | xargs -0 grep --exclude "*migrations*" foo

我只是想知道我是否遗漏了关于grep的命令行参数组合或者它们根本不能一起工作的事情.

最佳答案 我在.py文件上寻找一个术语,但不希望扫描迁移文件,所以我发现(对于grep 2.10)是以下(我希望这有帮助):

grep -nR --include="*.py" --exclude-dir=migrations whatever_you_are_looking_for . 
点赞