2011-04-26 9 views
5

Tengo dos directorios, por ejemplo, A y B. A tiene varios archivos: a1, a2, a3. B también tiene varios archivos: b1, b2. En primer lugar, yo uso las siguientes tareas de hormigas para copiar todos los archivos de B a A.¿Cómo puedo eliminar archivos en un directorio que se copian de otro directorio?

<copy todir="A" verbose="true"> 
    <fileset dir="B" includes="*"/> 
</copy> 

entonces quiero deshacer los pasos, es decir, eliminar los archivos en A, que se copian de B, es decir, B1 y B2 . ¿Cómo puedo lograr los objetivos?

NOTA: los nombres de los archivos en el ejemplo solo se utilizan para que comprendamos el problema. No sé los nombres exactos de los archivos en los dos directorios.

Respuesta

7

Debe usar un Selector para rellenar el conjunto de archivos de esos archivos que desea eliminar. Pruebe el Present Selector. Aquí hay un objetivo para complementar su ejemplo:

<target name="copy" > 
<copy todir="A" verbose="true"> 
    <fileset dir="B" includes="*"/> 
</copy> 
</target> 

<target name="uncopy" > 
<delete verbose="true"> 
    <fileset dir="A" > 
     <present present="both" targetdir="B"/> 
    </fileset> 
</delete> 
</target> 
+0

Esto es exactamente lo que quiero. Muchas gracias. – adarliu

+0

¡Me alegra ayudar! La práctica habitual es aceptar la respuesta marcando (ver http://stackoverflow.com/faq#howtoask). Ayuda a otros a encontrar las respuestas en el futuro. – DoctorRuss

0

Mientras que nunca he usado hormiga antes, presumiblemente los archivos copiados de A tendrían la marca de tiempo actual. Si eliminas todos los archivos de B con esa marca de tiempo, solo deberías obtener los archivos A, solo ten cuidado con el problema que tiene linux. Es decir, varias marcas de tiempo para diferentes cosas, y si lo copia, cambie uno pero no los demás.

Si eso no funciona, quizás pueda configurar el propietario de los archivos en A para que sea un propietario especial antes de copiarlos. A continuación, elimine todos los archivos de ese propietario de B. Cualquier solución que utilice dependerá del hecho de que algunos datos diferencian sus archivos A de los archivos B, ya sea nombre o propietario o marca de tiempo. Si no hay una diferencia consistente, necesita hacer una.

+0

Bueno, distinguir los archivos de A y B por marca de tiempo no funcionará si cambio los archivos más adelante. Quiero eliminar los archivos de B por nombre. Gracias de todos modos. – adarliu

Cuestiones relacionadas