Ant文件集仅匹配文件,但不包括所有子目录

时间:2018-11-14 18:38:39

标签: ant

如何仅直接复制目录下的文件而不复制其子目录?我不知道文件或子目录的名称是先验的。我已经尝试了以下方法,但无济于事:

<include name="*">  # includes all files and subdirs
===
<include name="*">
<exclude name="*/**> # or "*/" or "**"

任何帮助将不胜感激。

更新: 我最终只是添加了删除任务来删除复制的子目录:

<delete includeemptydirs="true">
    <fileset dir="${targetdir}">
        <type type="dir"/>
    </fileset>
</delete>

2 个答案:

答案 0 :(得分:0)

<?xml version="1.0" encoding="UTF-8"?>
<project default="copy-top-most-files-only" name="My Project">

    <property name="to.dir" value="/path/to/dest/folder/" />
    <property name="from.dir" value="/path/to/source/folder/" />

    <target name="copy-top-most-files-only">
        <copy todir="${to.dir}" includeEmptyDirs="false" >
            <fileset dir="${from.dir}">
                <exclude name="*/**/*" />
            </fileset>
        </copy>
    </target>
</project>

答案 1 :(得分:0)

执行此操作的一种方法是指定<depth>选择器,例如:

<copy todir="dest">
    <fileset dir="src">
        <depth max="0" />
    </fileset>
</copy>

这将防止子目录被复制。

如果需要,可以将选择器与包含/排除规则结合使用。