假设我们的文件夹结构如下:
/app
/app/data
...
/app/secondary
/app/secondary/data
我想递归搜索/app/data
,但我不想搜索/app/secondary/data
。
在app文件夹中,我的grep命令会是什么样的?
答案 0 :(得分:13)
这样就可以了解
grep -r --exclude-dir='secondary/data' PATTERN data
答案 1 :(得分:6)
@seamus接受的答案是错误的,因为grep -r --exclude-dir=<glob>
匹配基本名称,根据定义,它不能包含斜杠(斜杠将其转换为无操作,因为没有基本名称会匹配)。
<强> - 排除-DIR =水珠强>
...在搜索递归时,跳过基本名称与 glob 匹配的子目录...
我认为OP的目录结构并不能很好地解决问题,因为如果有人......
.
├── app
├── data
└── secondary
└── data
...当前目录为app
,我们可以这样做:
> grep -r <search-pattern> data
它不会搜索secondary
文件夹,因为它不在data
内。
给定具有嵌套data
文件夹的目录结构如何查看顶级data
但不在嵌套文件夹中。
.
└── data
├── file.txt
├── folder1
│ └── folder2
│ ├── data
│ │ └── file.txt
│ └── file.txt
└── folder3
├── data
│ └── file.txt
└── file.txt
> grep -r --exclude-dir='data' <search-pattern> data/*
注意最后的*
。如果省略,则不会搜索顶级data
文件夹。