假设我有一个这样的目录结构:


动物/狗/细节
动物/猫/细节
动物/青蛙/细节
动物/马/细节


使用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-Contribfor任务和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>

09-09 21:27