使用find但仅限于匹配特定模式的子目录

时间:2013-06-14 09:19:48

标签: linux find

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

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

因此,对于常规项目,我通常会这样: 找 。 -type f(-iname' .cpp'-o -iname' .hpp'-o -iname' .c'-o -iname' .h'-o -iname' .cc'-o -iname' .hh') - print | xargs etags -a

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

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

谢谢...

2 个答案:

答案 0 :(得分:4)

嵌套find可能适合您

find . -type d -name "cpp" -exec find {} -type f \;

答案 1 :(得分:3)

或更简单(假设cpp目录中没有其他子目录:

find . -type f -path "*/cpp/*"

这将返回整个相对路径。但是,这可能需要进一步修剪:/