¿Cómo puedo imprimir un conjunto de archivos en un archivo, un nombre de archivo por línea?
Pregunta
Tengo un conjunto de archivos poblada y que necesito para imprimir los nombres de archivo que coinciden en un archivo de texto.
He intentado esto:
<fileset id="myfileset" dir="../sounds">
<include name="*.wav" />
<include name="*.ogg" />
</fileset>
<property name="sounds" refid="myfileset" />
<echo file="sounds.txt">${sounds}</echo>
que imprime todos los archivos en una sola línea, separados por punto y coma. Es necesario disponer de un archivo por línea. ¿Cómo puedo hacer esto sin tener que recurrir a llamar a los comandos del sistema operativo o escribir código Java?
Actualizar
Ah, debería haber sido más específico - la lista no debe contener directorios. Estoy marcando de ChssPly76 como la respuesta aceptada de todos modos, ya que el href="http://ant.apache.org/manual/Tasks/pathconvert.html" rel="noreferrer"> pathconvert comando era exactamente lo que me faltaba. Para despojar a los directorios y la lista sólo los nombres de archivo, he utilizado el "aplanar" mapeador .
Aquí está el script que terminé con:
<fileset id="sounds_fileset" dir="../sound">
<include name="*.wav" />
<include name="*.ogg" />
</fileset>
<pathconvert pathsep="
" property="sounds" refid="sounds_fileset">
<mapper type="flatten" />
</pathconvert>
<echo file="sounds.txt">${sounds}</echo>
Solución
Utilice la PathConvert tarea:
<fileset id="myfileset" dir="../sounds">
<include name="*.wav" />
<include name="*.ogg" />
</fileset>
<pathconvert pathsep="${line.separator}" property="sounds" refid="myfileset">
<!-- Add this if you want the path stripped -->
<mapper>
<flattenmapper />
</mapper>
</pathconvert>
<echo file="sounds.txt">${sounds}</echo>
Otros consejos
Desde Ant 1.6 se puede utilizar toString :
<echo file="sounds.txt">${toString:myfileset}</echo>