2010-08-06 96 views
10

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

即我有这样的文件夹结构

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

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

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

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

由于提前,尤里·

回答

11
<copy toDir="newfolder"> 
    <fileset dir="folder"> 
    <include name="*/**"/> 
    <exclude name="*"/> 
    </fileset> 
    <regexpmapper from="^[^/]*/(.*)$$" to="\1" handledirsep="true"/> 
</copy> 

你只需要指定handledirsep如果你打算在Windows中运行该脚本。

+0

非常感谢,亚历山大! 我已经改变了一点正则表达式,因为在你的变体中,它的作用类似于扁平化。但是在将regexpmapper从=“^([^ /] *)/(。*)$$”更改为=“\ 2”handledirsep =“true”/>后,我得到了我所需要的内容。 您能否在您的答案中正确使用映射器? – 2010-08-09 12:57:21

+0

@Yury。我想我没有测试足够深的层次结构。因为'to'参数非常简单,所以我只剩下1个正则表达式组,但在表达式的开始处更改为'[^ /] *'。 – 2010-08-10 15:54:56