Apache ant字符选择器在文件名复制任务



对于这样的文件集:

XXX_staging
    A_filenameA_filename.txt
    B_filenAmeB_filenAme.txt
XXX_AL_staging

下面的ant目标将只将名称以大写字母"A"开头的文件从XXX_staging文件夹复制到XXX_AL_staging文件夹:

<target name="split_topics">
      <copy todir="XXX_AL_staging" verbose="true" overwrite="true">
        <fileset dir=".XXX_staging" includes="**/A*.txt">
        </fileset>
  </copy>
 </target>

我要做的是只复制名称以A到l开头的文件。这不起作用:

<target name="split_topics">
      <copy todir="XXX_AL_staging" verbose="true" overwrite="true">
        <fileset dir=".XXX_staging" includes="**/[A-L]*.txt">
        </fileset>
  </copy>
 </target>

我想知道问题是否在于第二个不仅仅是像第一个一样的通配符匹配,而是一个正则表达式匹配,这对文件名不起作用?我不想匹配文件的内容,只想匹配文件名,所以containsregexp似乎不在。

我该怎么做?

文件名选择器可以使用正则表达式。

示例1

├── build.xml
├── src
│   └── somedir
│       ├── A_filename.txt
│       ├── B_filename.txt
│       ├── C_filename.txt
│       ├── D_filename.txt
│       ├── E_filename.txt
│       ├── F_filename.txt
│       └── G_filename.txt
└── target
    └── somedir
        ├── A_filename.txt
        ├── B_filename.txt
        ├── C_filename.txt
        └── D_filename.txt

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="/[A-D].*.txt$"/>
      </fileset>
    </copy>
  </target>
</project>
示例2

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

不幸的是,ant模式不是正则表达式,一点也不是。它们是通配符,语法非常有限。对于复杂的解决方案,您可以使用在Javascript中定义自己的任务并编写一些内容,但这将不允许您创建替代文件集模式匹配语法。

相关内容

  • 没有找到相关文章

最新更新