假设我有一个这样的目录结构:
动物/狗/细节
动物/猫/细节
动物/青蛙/细节
动物/马/细节
使用ant,我想将animals
下名为details
的所有子目录重命名为现在的new
。因此结果将是这样的:
动物/狗/新
动物/猫/新
动物/青蛙/新
动物/马/新
我已经尝试过这样的事情:
<move tofile="new">
<path id="directories.to.rename">
<dirset dir="animals">
<include name="**/details"/>
</dirset>
</path>
</move>
但是得到这个错误:
Cannot concatenate multiple files into a single file.
最佳答案
使用Ant-Contrib的for
任务和propertyregex
任务。
<target name="test">
<for param="detailsDir">
<dirset dir="animals">
<include name="**/details"/>
</dirset>
<sequential>
<propertyregex property="output.dir" input="@{detailsDir}" regexp="(.*)/details" replace="\1" />
<move file="@{detailsDir}" toFile="${output.dir}/new" />
</sequential>
</for>
</target>