2008-10-01 17 views
14

Quiero eliminar todos los directorios y subdirectorios en un directorio raíz que contienen "tmp" en sus nombres. Esto debería incluir cualquier archivo .svn también. Mi primera suposición es utilizar¿Cómo elimino un dirset de directorios con Ant?

<delete> 
    <dirset dir="${root}"> 
      <include name="**/*tmp*" /> 
    </dirset> 
</delete> 

Esto no parece funcionar, ya que no puede anidar un dirset en una etiqueta delete.

¿Es este un enfoque correcto, o debería estar haciendo otra cosa?

  • ant version == 1.6.5.
  • Java versión 1.6.0_04 ==

Respuesta

24

Aquí está la respuesta que trabajó para mí:

<delete includeemptydirs="true"> 
    <fileset dir="${root}" defaultexcludes="false"> 
     <include name="**/*tmp*/**" /> 
    </fileset> 
</delete> 

tuve una complicación adicional que necesitaba para eliminar .svn directorios también. Con defaultexcludes, se excluyeron los archivos .*, por lo que los directorios vacíos no estaban realmente vacíos, por lo que no se eliminaron.

El atributo includeemptydirs (gracias, flicken, XL-Plüschhase) permite que el comodín ** final coincida con una cadena vacía.

5

intento:

<delete includeemptydirs="true"> 
    <fileset dir="${root}"> 
      <include name="**/*tmp*/*" /> 
    </fileset> 
</delete> 

ThankYou Flicken!

+0

Para eliminar directorios, deberá agregar ncludeemptydirs = "true", como se describe a continuación. – flicken

4

Solo quería agregar que la parte de la solución que funcionaba para mí se agregaba /** al final de la ruta de inclusión. He intentado lo siguiente para eliminar Eclipse .settings directorios:

<delete includeemptydirs="true"> 
    <fileset dir="${basedir}" includes"**/.settings"> 
</delete> 

pero no funcionó hasta que cambié a la siguiente:

<delete includeemptydirs="true"> 
    <fileset dir="${basedir}" includes"**/.settings/**"> 
</delete> 

Por alguna razón añadiendo /** a la ruta elimina los archivos en el directorio coincidente, todos los archivos en todos los subdirectorios, los subdirectorios y los directorios coincidentes. Al agregar /*, solo se eliminan los archivos en el directorio correspondiente, pero no se eliminará el directorio correspondiente.