我想使用Ant从单个子目录复制文件和子目录,而不复制目录结构和内容的其余部分。例如,我想复制dir_3及其文件(file_1到file_n)和子目录(dir_4和dir_5),但不复制dir_1和dir_2。
temp
\--dir_1
\--dir_2
|
\--dir_3
|
\--dir_4
\--dir_5
\-- file_1
|
\--file_n谢谢。
发布于 2011-06-22 10:34:20
<copy todir="${copy.dir}">
<fileset dir="temp">
<include name="**/dir3/**"/>
</fileset>
</copy>当您使用include指令时,它将只包含与您提供的模式匹配的文件。在本例中,我只复制完整路径名中包含/dir3/的那些文件。这包括dir3下的子目录和dir3下的所有文件。
您可以使用exclude指令覆盖include指令:
<copy todir="${copy.dir}">
<fileset dir="temp">
<include name="**/dir3/**"/>
<exclude name="**/dir3/*"/>
</fileset>
</copy>这将复制这些子目录中的所有子目录和文件,但不会复制dir3本身下的文件。*匹配目录中的所有文件,而**匹配整个目录树中的所有文件。
请注意,这将创建一个目录temp/dir2/dir3。如果我想要temp/dir3,我必须将我的文件集设置为dir3的父目录
<copy todir="${copy.dir}">
<fileset dir="temp/dir2">
<include name="dir3/**"/>
</fileset>
</copy>执行此操作:
<copy todir="${copy.dir}">
<fileset dir="temp/dir2/dir3"/>
</copy>我将创建一个目录temp,其中所有文件都直接在dir3下,在temp下。还将有一个temp/dir4和temp/dir5目录,其中包含这些目录下的所有文件(和目录树)。
发布于 2011-06-22 04:10:56
<copy todir="/some/path/foobar" verbose="true">
<fileset dir="/some/path/temp/dir2" includes="**"/>
</copy>只需使用从dir2开始的文件集,包括下面的所有目录和文件。
verbose = true,回显复制的所有文件
如果todir指定的dir也需要使用overwrite = true,则可能需要使用overwrite=true
属性已存在,否则复制任务不会覆盖现有文件
https://stackoverflow.com/questions/6430192
复制相似问题