使用ant将文件从源目录复制到目标目录



我想在以下条件下使用ANT将一些特定的文件从源目录复制到目标目录。

源文件夹包含以下文件

  • 35001 _abc.sql
  • 38001 _abc.sql
  • 38002 _abc.sql
  • 39001 _abc.sql

我要复制文件名以36000及以上开头的文件。

Output目录应该包含以下文件

  • 38001 _abc.sql
  • 38002 _abc.sql
  • 39001 _abc.sql

一个想法是在文件名上使用正则表达式来限制数字的范围。

<标题> 例子
├── build.xml
├── src
│   ├── 35001_abc.sql
│   ├── 38001_abc.sql
│   ├── 38002_abc.sql
│   ├── 39001_abc.sql
│   ├── 41001_abc.sql
│   └── 46001_abc.sql
└── target
    ├── 38001_abc.sql
    ├── 38002_abc.sql
    ├── 39001_abc.sql
    ├── 41001_abc.sql
    └── 46001_abc.sql

build . xml

<project name="demo" default="copy">
  <property name="src.dir"   location="src"/>
  <property name="build.dir" location="target"/>
  <target name="copy">
    <copy todir="${build.dir}" overwrite="true" verbose="true">
      <fileset dir="${src.dir}">
        <filename regex="^(3[6-9]|[4-9]d)d{3}_abc.sql$"/>
      </fileset>
    </copy>
  </target>
  <target name="clean">
    <delete dir="${build.dir}"/>
  </target>
</project>