<copy todir="${copy.dir}">
<fileset dir="temp">
<include name="**/dir3/**"/>
</fileset>
</copy>
当您使用include 指令时,它只会包含与您指定的模式匹配的文件。在这种情况下,我只复制那些在其完整路径名中某处具有/dir3/ 的文件。这包括dir3 下的子目录和dir3 下的所有文件。
您可以使用exclude 指令覆盖include 指令:
<copy todir="${copy.dir}">
<fileset dir="temp">
<include name="**/dir3/**"/>
<exclude name="**/dir3/*"/>
</fileset>
</copy>
这将复制这些子目录中的所有子目录和文件,但不会复制dir3 本身下的文件。 * 匹配目录中的所有文件,而** 匹配整个目录树中的所有文件。
请注意,这将创建一个目录temp/dir2/dir3。如果我想要temp/dir3,我必须将我的文件集设置为dir3的父目录:
<copy todir="${copy.dir}">
<fileset dir="temp/dir2">
<include name="dir3/**"/>
</fileset>
</copy>
这样做:
<copy todir="${copy.dir}">
<fileset dir="temp/dir2/dir3"/>
</copy>
将创建一个目录temp,其中包含直接在dir3 下的所有文件,直接在temp 下。还有一个temp/dir4 和temp/dir5 目录,其中包含这些目录下的所有文件(和目录树)。