Ant - 仅复制文件而不是目录

Sri*_*san 12 ant

我需要使用Ant脚本复制除该文件夹中的目录之外的文件夹中的所有文件.

我使用下面的脚本来做到这一点.

<copy todir="targetsir">
  <fileset dir="srcdir">
     <include name="**/*.*"/>
  </fileset>
</copy>
Run Code Online (Sandbox Code Playgroud)

但它会复制该文件夹中的所有文件和目录.

如何限制/过滤该文件夹中的目录?

谢谢,

小智 24

我认为有一种更简单的方法.

flatten="true" - 忽略源目录的目录结构,将所有文件复制到由todir属性指定的单个目录中.默认是false.


ska*_*man 10

你的意思是srcdirconatins子目录,而你不想复制它们,你只想将文件复制到一层srcdir

<copy todir="targetsir">
  <fileset dir="srcdir">
     <include name="*"/>
     <type type="file"/>
  </fileset>
</copy>
Run Code Online (Sandbox Code Playgroud)

这应该工作.**/*.*您问题中的" "表示"每个子目录下的每个文件".只使用" *"将匹配srcdir下的文件,而不是子目录.

编辑以排除创建空子目录.


Pav*_*vel 7

我没有足够的声誉来评论,所以我在这里写新帖子.这两种解决方案一般都包含name="*"name="*.*"工作正常,但它们都不是您所期望的.

第一个创建源目录中存在的空目录,因为它也*匹配目录名.*.*主要是因为文件有扩展名和目录的约定,但是如果你命名你的目录my.dir,这个通配符也会创建一个带有这个名字的空目录.

要正确地执行此操作,您可以利用接受的<type />选择器<fileset />:

<copy todir="targetsir"> 
  <fileset dir="srcdir"> 
     <include name="*"/> 
     <type type="file"/>
  </fileset> 
</copy>
Run Code Online (Sandbox Code Playgroud)