2010-08-06 19 views
10

¿Cómo puedo copiar el contenido de todas las subcarpetas de una carpeta determinada usando Ant?Copie el contenido de las subcarpetas con Ant

es decir, tengo tanta estructura de carpetas

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

No sé los nombres exactos de las subcarpetas. Y necesito copiar el contenido de todos ellos en una carpeta (mantener la estructura del contenido, es decir, copiar todos los archivos en un directorio utilizando aplanar no es una solución). Necesito obtener

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

¿El conjunto de archivos permite agrupar subcarpetas de tal manera? ** representa cero o más directorios, y el uso de * como nombre de directorio no está permitido, es decir, <fileset dir="${dir}/*/" /> no es aceptable.

Gracias de antemano, Yury

Respuesta

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

Sólo se necesitan para especificar handledirsep si alguna vez va a ejecutar esta secuencia de comandos en Windows.

+0

Muchas gracias, Alexander! He cambiado la expresión regular un poco, porque en su variante actuó de forma similar a aplanar. Pero después de cambiar el regexpmapper a , Tengo lo que necesito. ¿Podría corregir mapeador en su respuesta? –

+0

@Yury. Supongo que no probé una jerarquía lo suficientemente profunda. Como el parámetro 'to' es realmente simple, solo he dejado 1 grupo regex, pero cambié a' [^ /] * 'al comienzo de la expresión. –

Cuestiones relacionadas