如何用grep查找当前目录含指定串且不含另一指定串的文件
用Grep查找包含指定字符串但排除另一字符串的文件
要实现需求,你需要将两次grep操作结合:先筛选出包含目标字符串的文件,再从中排除包含指定字符串的文件。
修改后的命令(基础版)
grep -l --include=\*.tf --include=file.hcl --exclude=versions.tf -rnw '.' -e 'string\s*\"string\"\s*' | xargs grep -L --include=\*.tf --include=file.hcl --exclude=versions.tf -w -e '要排除的字符串'
更稳妥的版本(处理含空格的文件名)
如果你的文件名可能包含空格,建议添加-Z和-0参数避免错误:
grep -l --include=\*.tf --include=file.hcl --exclude=versions.tf -rnwZ '.' -e 'string\s*\"string\"\s*' | xargs -0 grep -L --include=\*.tf --include=file.hcl --exclude=versions.tf -w -e '要排除的字符串'
参数说明
- 第一部分的
grep -l:输出包含目标字符串的文件名(替换你原命令的-L,-L是输出不匹配的文件名) - 管道
|配合xargs:将前一步的文件列表作为后一步grep的处理对象 - 第二部分的
grep -L:从传入的文件中,输出不包含排除字符串的文件名
内容的提问来源于stack exchange,提问作者Remerio
相关产品推荐
相关产品推荐

