turnos simulador puntos placa matricula licencias fotomultas ant

simulador - apache ant download



Filtrar archivos en el lugar con Ant? (1)

Ver la tarea de replace :

<replace dir="mydir" includes="foo, bar, baz"> <replacefilter token="OLD" value="NEW" /> </replace>

o la tarea replaceregexp :

<replaceregexp file="${src}/build.properties" match="OldProperty=(.*)" replace="NewProperty=/1" byline="true"/>

Tengo un directorio de archivos para el que me gustaría realizar un filtrado de cadenas "in situ" utilizando Apache Ant (versión 1.7.1 en Linux).

Por ejemplo, supongamos que en el directorio mydir tengo archivos foo , bar y baz . Además, suponga que todas las apariciones de la expresión regular OLD([0-9]) deben cambiarse a NEW/1 , por ejemplo, OLD2NEW2 . (Tenga en cuenta que la tarea de replace Ant no funcionará porque no admite el filtrado de expresiones regulares).

Esta situación de prueba se puede crear con los siguientes comandos de Bash (ant se ejecutará en el directorio actual, es decir, el directorio principal de mydir ):

mkdir mydir for FILE in foo bar baz ; do echo "A OLD1 B OLD2 C OLD3" > mydir/${FILE} ; done

Aquí está mi primer intento de hacer el filtrado con Ant:

<?xml version="1.0"?> <project name="filter" default="filter"> <target name="filter"> <move todir="mydir"> <fileset dir="mydir"/> <filterchain> <tokenfilter> <replaceregex pattern="OLD([0-9])" replace="NEW/1" flags="g"/> </tokenfilter> </filterchain> </move> </target> </project>

La ejecución de este primer script Ant no tiene efecto en los archivos en mydir . El parámetro de overwrite es true de forma predeterminada con la tarea move Ant. Incluso jugué con la configuración de granularity , pero eso no ayudó.

Aquí está mi segundo intento, que "funciona", pero es un poco molesto debido a la creación de un archivo temporal. Esta versión filtra el contenido correctamente moviendo el contenido a archivos con un sufijo filtered , luego el contenido filtrado se "mueve hacia atrás" con los nombres de archivo originales:

<?xml version="1.0"?> <project name="filter" default="filter"> <target name="filter"> <move todir="mydir"> <globmapper from="*" to="*.filtered"/> <fileset dir="mydir"/> <filterchain> <tokenfilter> <replaceregex pattern="OLD([0-9])" replace="NEW/1" flags="g"/> </tokenfilter> </filterchain> </move> <move todir="mydir"> <globmapper from="*.filtered" to="*"/> <fileset dir="mydir"/> </move> </target> </project>

¿Se puede hacer que el primer intento (sin archivos temporales) funcione?