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



给定这样的源文件目录:

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=将空格(和逗号)视为分隔符,因此它被视为包括"File"one_answers"*.txt",因此它实际上复制了每个文件。文档中没有提到如果你想在模式中使用字面字符,你将如何转义字符,而且在阅读源代码时,他们似乎根本没有加入任何转义机制。

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

不过,通常情况下,文件的数量可能很大,或者您可能不想每次文件更改时都更新构建,那么正确的方法是什么呢?

使用带有嵌套include:的fileset

<fileset dir="src">
  <include name="File *.txt"/>
</fileset>

includename自变量是一个单一模式,因此空格不被视为分隔符。

相关内容

  • 没有找到相关文章

最新更新