蚂蚁 - 只拷贝文件不是目录(Ant - copy only file not directory)

2019-07-24 16:49发布

我需要的所有文件夹中复制,除了目录使用Ant脚本文件夹中。

即时通讯使用下面的脚本来做到这一点。

<copy todir="targetsir">
  <fileset dir="srcdir">
     <include name="**/*.*"/>
  </fileset>
</copy>

但它拷贝该文件夹中的所有文件和目录。

如何限制该文件夹中/ filter目录?

谢谢,

Answer 1:

你的意思是srcdir conatins子目录,你不想复制它们,你只是想将文件复制下面的一级srcdir

<copy todir="targetsir">
  <fileset dir="srcdir">
     <include name="*"/>
     <type type="file"/>
  </fileset>
</copy>

这应该工作。 在“ **/*.* ”你的问题中的意思是“每个子目录下的所有文件”。 只要使用“ * ”将只匹配下SRCDIR的文件,而不是子目录。

编辑以排除空的子目录的创建。



Answer 2:

我觉得还有一个更简单的方法。

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



Answer 3:

我没有足够的信誉发表评论,所以我在这里写新的岗位。 这两种解决方案,包括name="*"name="*.*"做工精细,一般,但他们都不是你所期望的是什么。

首先创建空的目录中存在的源目录,因为*目录名也匹配。 *.*的作品主要是因为会议的文件扩展名必须与目录没有,但如果你的名字你的目录my.dir ,该通配符将使用此名称创建一个空的目录中。

要正确地做到这一点,你可以利用<type />选择器, <fileset />接受:

<copy todir="targetsir"> 
  <fileset dir="srcdir"> 
     <include name="*"/> 
     <type type="file"/>
  </fileset> 
</copy>


Answer 4:

你能试一下吗

<copy todir="targetsir"> 
  <fileset dir="srcdir"> 
     <include name="*.*"/> 
  </fileset> 
</copy> 

**用于匹配的目录结构。



Answer 5:

<copy todir="targetsir" includeEmptyDirs="false"> 
  <fileset dir="srcdir"> 
     <include name="*"/> 
  </fileset> 
</copy>


Answer 6:

如果你的文件夹下有很多子目录,你不希望他们被复制(如果你只想文件)试试这个..

<target name="copy">
<copy todir="out" flatten="true">
<fileset dir="tn">
<filename name="**/cit.txt" />
</fileset>
</copy>
</target>


Answer 7:

秘诀是使用未文件集,但dirset代替。



文章来源: Ant - copy only file not directory
标签: ant