使用find命令但只在匹配特定模式的子目录中搜索

4

我正在尝试构建我的etags文件。我的项目结构是这样的:给定一个根目录,其中有子目录,在其中可能有名为'cpp'的目录。例如:

root
 - sub1
  - cpp
 - sub2
  - sub21
   - cpp
   - csharp

对于常规项目,我通常会执行以下操作:

find . -type f ( -iname '.cpp' -o -iname '.hpp' -o -iname '.c' -o -iname '.h' -o -iname '.cc' -o -iname '.hh' ) -print | xargs etags -a

这将不再有效,因为它还会选择可能是C#、Objective-C等文件...

所以我想要实现的是只有在名为 cpp 的子目录中才返回 find 命令找到的文件。那么我该如何让 find 做到这一点呢?

谢谢...

2个回答

7
更简单地说(假设cpp目录中没有更多的子目录):
find . -type f -path "*/cpp/*"

这将返回从 . 开始的完整相对路径,但可能需要进一步修剪 :/

5
嵌套的find可能适合您。
find . -type d -name "cpp" -exec find {} -type f \;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接