我有一个填充的文件集,我需要将匹配的文件名打印到文本文件中。
我试过了:
<fileset id="myfileset" dir="../sounds">
<include name="*.wav" />
<include name="*.ogg" />
</fileset>
<property name="sounds" refid="myfileset" />
<echo file="sounds.txt">${sounds}</echo>
打印单行上的所有文件,以分号分隔。我需要每行一个文件。如何在不诉诸OS命令或编写Java代码的情况下完成此操作?
更新:
啊,本来应该更具体 - 列表不能包含目录。无论如何,我将ChssPly76标记为已接受的答案,因为pathconvert命令正是我所遗漏的。要剥离目录并仅列出文件名,我使用了"flatten" mapper。
这是我最终得到的脚本:
<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>
答案 0 :(得分:66)
使用PathConvert任务:
<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>
答案 1 :(得分:1)
自Ant 1.6起,您可以使用toString:
<echo file="sounds.txt">${toString:myfileset}</echo>