如何将文件与Ant中的模式中的空格进行匹配?

时间:2015-02-24 00:36:05

标签: ant fileset

给出一个像这样的源文件目录:

tester$ ls -l src
-rw-r--r--   1 tester  staff    0 24 Feb 11:28 File 1.txt
-rw-r--r--   1 tester  staff    0 24 Feb 11:28 File 2.txt
-rw-r--r--   1 tester  staff    0 24 Feb 11:28 File 3.txt
-rw-r--r--   1 tester  staff    0 24 Feb 11:30 FileFalse 1.txt
-rw-r--r--   1 tester  staff    0 24 Feb 11:30 FileFalse 2.txt
-rw-r--r--   1 tester  staff    0 24 Feb 11:30 FileFalse 3.txt

我可能会尝试使用fileset

将它们全部复制到其他位置
<project name="test" default="copy">
  <target name="copy">
    <mkdir dir="build"/>
    <copy todir="build">
      <fileset dir="src" includes="File *.txt"/>
    </copy>
  </target>
</project>

但是include=将空格(和逗号)视为分隔符,因此将其视为包含“文件”和“* .txt” - 因此它实际上复制了每个文件。如果你想在模式中使用文字字符,并且阅读源代码,那么文档并没有提到如何逃避角色,似乎它们根本没有放入任何转义机制。

我们在构建中将此作为一个真正的问题,但我们只匹配一个文件,因此我只使用<fileset file="..."/>作为解决方法。

但是,一般情况下,文件数量可能很大,或者您可能不希望每次更改文件时都更新构建版本,那么执行此操作的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

使用嵌套fileset的{​​{1}}:

include

<fileset dir="src"> <include name="File *.txt"/> </fileset> 的{​​{1}}参数是单一模式,因此空格不会被视为分隔符。