ant中如何复制一种目录下的所有内容?
How to copy all contents under one kind of directory in ant?
我想复制目录 dir_java
下的文件和子目录,但不复制 dir_java
目录本身及其所有父目录。 a.k.a 我想在 ant copy 任务中获取所有目录 dir_com
及其子目录到 todir
。
有办法吗?
temp
\--dir_1
|
\--dir_java
|
\--dir_com
\--dir_2
|
\--dir_java
|
\--dir_com
\--dir_3
|
\--dir_foobar
dir_1
,dir_2
,dir_3
无规律
下面我试过了
<copy todir="to_dir" verbose="true" overwrite="true">
<fileset dir="temp" includes="*/dir_java/**" />
</copy>
但我得到了像 to_dir/dir_1/dir_java/dir_com
.
这样的目录
我想要像 to_dir/dir_com
这样的目录
我最好的尝试是在上述复制任务之后添加一个调用 cp 命令的 exec 任务,但仅适用于非 windows 平台:
<exec executable="/bin/sh">
<arg value="-c"/>
<arg value="cp -R to_dir/*/dir_java/* to_dir"/>
</exec>
所有 dir_java
目录是否都在层次结构中的同一级别?如果是这样,请考虑使用 <cutdirsmapper>
...
[cutdirsmapper] strips a configured number of leading directories from the source file name.
在 <cutdirsmapper>
删除前导目录后,它将保留目录结构的任何剩余部分...
<copy todir="to_dir" verbose="true" overwrite="true">
<fileset dir="temp" includes="*/dir_java/**" />
<cutdirsmapper dirs="2" />
</copy>
在 运行 蚂蚁
之前
$ find . -type f
./temp/dir_1/dir_java/dir_com/1.txt
./temp/dir_2/dir_java/dir_com/2.txt
./temp/dir_3/dir_foobar/3.txt
运行蚂蚁
之后
$ find . -type f
./temp/dir_1/dir_java/dir_com/1.txt
./temp/dir_2/dir_java/dir_com/2.txt
./temp/dir_3/dir_foobar/3.txt
./to_dir/dir_com/1.txt
./to_dir/dir_com/2.txt
注意应用映射后 1.txt
和 2.txt
仍然在 dir_com
下。
我想复制目录 dir_java
下的文件和子目录,但不复制 dir_java
目录本身及其所有父目录。 a.k.a 我想在 ant copy 任务中获取所有目录 dir_com
及其子目录到 todir
。
有办法吗?
temp
\--dir_1
|
\--dir_java
|
\--dir_com
\--dir_2
|
\--dir_java
|
\--dir_com
\--dir_3
|
\--dir_foobar
dir_1
,dir_2
,dir_3
下面我试过了
<copy todir="to_dir" verbose="true" overwrite="true">
<fileset dir="temp" includes="*/dir_java/**" />
</copy>
但我得到了像 to_dir/dir_1/dir_java/dir_com
.
我想要像 to_dir/dir_com
我最好的尝试是在上述复制任务之后添加一个调用 cp 命令的 exec 任务,但仅适用于非 windows 平台:
<exec executable="/bin/sh">
<arg value="-c"/>
<arg value="cp -R to_dir/*/dir_java/* to_dir"/>
</exec>
所有 dir_java
目录是否都在层次结构中的同一级别?如果是这样,请考虑使用 <cutdirsmapper>
...
[cutdirsmapper] strips a configured number of leading directories from the source file name.
在 <cutdirsmapper>
删除前导目录后,它将保留目录结构的任何剩余部分...
<copy todir="to_dir" verbose="true" overwrite="true">
<fileset dir="temp" includes="*/dir_java/**" />
<cutdirsmapper dirs="2" />
</copy>
在 运行 蚂蚁
之前$ find . -type f
./temp/dir_1/dir_java/dir_com/1.txt
./temp/dir_2/dir_java/dir_com/2.txt
./temp/dir_3/dir_foobar/3.txt
运行蚂蚁
之后$ find . -type f
./temp/dir_1/dir_java/dir_com/1.txt
./temp/dir_2/dir_java/dir_com/2.txt
./temp/dir_3/dir_foobar/3.txt
./to_dir/dir_com/1.txt
./to_dir/dir_com/2.txt
注意应用映射后 1.txt
和 2.txt
仍然在 dir_com
下。