【问题标题】:Copy content of subfolders with Ant使用 Ant 复制子文件夹的内容
【发布时间】:2010-08-06 12:04:04
【问题描述】:

如何使用 Ant 复制给定文件夹的所有子文件夹的内容?

即我有这样的文件夹结构

folder/
folder/sub1/1.txt
folder/sub1/f1/1.txt
folder/sub2/2.txt
...

我不知道子文件夹的确切名称。而且我需要将所有内容中的内容复制到一个文件夹中(保持内容的结构,即使用 flatten 将所有文件复制到一个目录中不是解决方案)。我需要得到

newfolder/1.txt
newfolder/1/1.txt
newfolder/2.txt
...

文件集是否允许以这种方式对子文件夹进行分组? ** 代表零个或多个目录,不允许使用* 作为目录名称,即<fileset dir="${dir}/*/" /> 是不可接受的。

提前致谢,尤里

【问题讨论】:

    标签: ant copy fileset


    【解决方案1】:
    <copy toDir="newfolder">
      <fileset dir="folder">
        <include name="*/**"/>
        <exclude name="*"/>
      </fileset>
      <regexpmapper from="^[^/]*/(.*)$$" to="\1" handledirsep="true"/>
    </copy>
    

    如果您打算在 Windows 中运行此脚本,则只需指定 handledirsep

    【讨论】:

    • 非常感谢,亚历山大!我对正则表达式进行了一些更改,因为在您的变体中,它的作用类似于展平。但是在将 regexpmapper 更改为 之后,我得到了我需要的东西。您能否更正您的答案中的映射器?
    • @Yury。我想我没有测试足够深的层次结构。因为to参数真的很简单,所以我只留下了1个正则表达式组,但是在表达式的开头改成了[^/]*
    猜你喜欢
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-20
    • 2021-07-09
    相关资源
    最近更新 更多