Ant 如何删除从另一个目录复制的目录中的文件?

Ant 如何删除从另一个目录复制的目录中的文件?,ant,Ant,我有两个目录,比如A和B。A有几个文件:a1、a2、a3。B还有几个文件:b1、b2。 首先,我使用以下ant任务将所有文件从B复制到A <copy todir="A" verbose="true"> <fileset dir="B" includes="*"/> </copy> 然后我想撤销这些步骤,即删除A中从B复制的文件,即b1和b2。我怎样才能实现目标 注意:示例中的文件名仅用于我们理解问题。我不知道这两个目录中的确切文件名。虽然我以前从

我有两个目录,比如A和B。A有几个文件:a1、a2、a3。B还有几个文件:b1、b2。 首先,我使用以下ant任务将所有文件从B复制到A

<copy todir="A" verbose="true">
    <fileset dir="B" includes="*"/>
</copy>

然后我想撤销这些步骤,即删除A中从B复制的文件,即b1和b2。我怎样才能实现目标


注意:示例中的文件名仅用于我们理解问题。我不知道这两个目录中的确切文件名。

虽然我以前从未使用过ant,但从A复制的文件可能具有当前时间戳。如果您从B中删除了所有带有该时间戳的文件,那么您应该只获得A文件,只是要注意linux存在的问题。也就是说,不同事物的多个时间戳,如果你复制,你会改变其中一个,而不是其他


如果这不起作用,也许可以在复制文件之前将中文件的所有者设置为特殊所有者。然后从B中删除该所有者的所有文件。您使用的任何解决方案都取决于这样一个事实:某个数据段将A文件与B文件区分开来,无论是名称、所有者还是时间戳。如果没有一致的差异,则需要进行选择。

您应该使用选择器填充要删除的文件的文件集。试试这个。这里有一个目标来补充您的示例:

<target name="copy" >
<copy todir="A" verbose="true">
    <fileset dir="B" includes="*"/>
</copy>
</target>

<target name="uncopy" >
<delete verbose="true">
    <fileset dir="A" >
        <present present="both" targetdir="B"/>
    </fileset>
</delete>
</target>


如果我以后更改了文件,那么通过时间戳将文件与A和B区分开来是行不通的。我想按名称删除B中的文件。无论如何,谢谢你。这正是我想要的。非常感谢。很高兴能帮忙!通常的做法是打勾接受答案(参见)。它帮助其他人在将来找到答案。