使用 find 但仅在匹配特定模式的子目录中使用

mat*_*999 3 linux find

我正在尝试构建我的 etags 文件。我有一个项目结构,在给定根目录的情况下,有子目录,其中可以是名为“cpp”的目录。例如:

root
 - sub1
  - cpp
 - sub2
  - sub21
   - cpp
   - csharp
Run Code Online (Sandbox Code Playgroud)

所以对于常规项目,我通常是这样的: find 。-type f ( -iname ' .cpp' -o -iname ' .hpp' -o -iname ' .c' -o -iname ' .h' -o -iname ' .cc' -o -iname ' .hh' ) - 打印 | xargs etags -a

这将不再起作用,因为它还会拾取可能是 csharp、objective c 等的文件...

所以我想要完成的是只让 find 返回名为 cpp 的子目录中的文件。那么我怎样才能找到做到这一点呢?

谢谢 ...

San*_*rix 7

或者更简单(假设 cpp 目录中没有更多子目录:

find . -type f -path "*/cpp/*"
Run Code Online (Sandbox Code Playgroud)

这将返回来自 的整个相对路径。不过,这可能需要进一步修剪:/


Alp*_*per 5

嵌套find可能适合你

find . -type d -name "cpp" -exec find {} -type f \;
Run Code Online (Sandbox Code Playgroud)