【发布时间】:2019-01-25 15:57:13
【问题描述】:
我想在当前目录及其子文件夹中搜索单词disable_mlock。为此,我使用:
sam@sam-Dell:~/Desktop$ grep -r disable_mlock
a/vault/config/vault-config.hcl:disable_mlock=true
b/vault/config/vault-config.hcl:disable_mlock=true
vault/config/vault-config.hcl:disable_mlock=true
然后,我只想排除 vault/config/ 子目录:
sam@sam-Dell:~/Desktop$ grep -r --exclude-dir=vault/config/
a/vault/config/vault-config.hcl:disable_mlock=true
b/vault/config/vault-config.hcl:disable_mlock=true
vault/config/vault-config.hcl:disable_mlock=true
而且它不起作用。
然后我尝试仅排除 vault/ 目录:
sam@sam-Dell:~/Desktop$ grep -r disable_mlock --exclude-dir=vault
sam@sam-Dell:~/Desktop$
它什么也不返回...可能是因为vault/ 在每个结果的路径中。
如果我排除config/:
sam@sam-Dell:~/Desktop$ grep -r disable_mlock --exclude-dir=config/
sam@sam-Dell:~/Desktop$
也不显示任何结果 - 所有匹配项都位于 config/ 目录下。但我只想排除其中一个config/ 目录,vault/config/,而不是全部!
我的结论是 grep 一次只能排除一个目录,无论是直接目录还是深层目录,都相对于当前目录。在这种情况下,这对我来说是个问题,因为我的路径具有相似的目录。
那么,我找不到使用grep排除特定嵌套子目录的方法。有没有办法使用 grep?
【问题讨论】:
-
@MTilsted 没看懂,试过
grep disable_mlock --exclude-dir=vault/ * */ *还是不行 -
您可以重新 grep 输出并排除该短语吗?
-
在这种特殊情况下,您不妨使用这个简单的 glob:
grep -r disable_mlock */vault/config。 -
您可以使用
find对找到的文件执行grep吗?请记住,如果您希望 grep 打印文件名,则需要指定 -H。