如何在find中排除目录

时间:2016-04-25 14:30:34

标签: unix find

我已准备好很多帖子,并尝试了所有这些帖子,但是没有任何工作对查找输出产生任何影响。

我基本上有一堆源文件,但是grails的工作方式,它将一个“目标”目录放在一个子文件夹中,包含我们想要排除的所有构建工件。

我的基本命令行包含我需要的文件如下:

 find * -type f -name "*.groovy" -o -name "*.gsp" -print > ha

注意我没有使用“查找”。因为我不希望“./xxx”出现在输出中。

我在哈哈获得“myapp / target / xxx / yyy”。

我已经尝试了以下所有内容,但没有任何影响输出:

 find * ! -path "backoffice/target/"  -type f -name "*.groovy" -o -name "*.gsp" -prune -print > ha
 find * \( ! -path "backoffice/target/*" \)  -type f -name "*.groovy" -o -name "*.gsp" > ha
 find * -type f -name "*.groovy" -o -name "*.gsp" -not -path '*/target/*' > ha
 find * -type f -name "*.groovy" -o -name "*.gsp" ! -path "*target*" > ha
 find * -type d \( ! -wholename "backoffice/target/*" \)  -type f -name "*.groovy" -o -name "*.gsp"  -print > ha
 find * ! -wholename "backoffice/target/*"  -type f -name "*.groovy" -o -name "*.gsp"  -print > ha

以及上述的许多变化。

任何想法?

2 个答案:

答案 0 :(得分:1)

find * -path "backoffice/target/" -prune -o -type f \( -name "*.groovy" -o -name "*.gsp" \) -print

答案 1 :(得分:0)

这是一个答案,99%的已发布解决方案"不包括子目录"似乎不起作用(至少对我而言)。

有趣的是,这是我们尝试获取grails项目的源文件列表:

  find * -type d \( -name "target" -o -name "test" \) -prune -o -type f \( -name "*.groovy" -o -name "*.gsp" -o -name "*.java" -o -name "*.css" -o -name "*.js" -o -name "*.less" -o -name "*.properties" -o -name "*.sql" -o -name "*.xml" \) -print > ha