Consider this filtered view of my directory tree: src/HTML-XForm/lib src/ResPath/lib src/XML-MSXML6/lib
You get the idea, it is: src/*/lib Now I want to copy the files below src/*/lib, or most of them. And I want to strip the leading two directories. I came up with the following solution, but it is clumsy and I think there is a better way that I'm missing. <project default="copy"> <property name="source.dir" location="src"/> <property name="target.dir" location="lib"/> <target name="copy"> <copy todir="${target.dir}"> <fileset dir="${source.dir}"> <include name="*/lib/**/*.*"/> <exclude name="**/urmel.*"/> </fileset> <!-- portability: path separator logic redoubled in regexp --> <mapper type="regexp" from="^[-_a-zA-Z0-9]*[\\/]lib(.*)" to="\1"/> </copy> </target> </project> What I'm wondering is if there isn't some option like in tools such as wget (--cut-dirs to shorten the path) or cpio or tar, which in Ant's case would probably translate to a mapper, like cut-dirs-mapper. -- Michael Ludwig