如何将文件集打印到文件,每行一个文件名?

时间:2009-09-21 21:05:25

标签: ant fileset

我有一个填充的文件集,我需要将匹配的文件名打印到文本文件中。

我试过了:

<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="&#xA;" property="sounds" refid="sounds_fileset">
    <mapper type="flatten" />
</pathconvert>

<echo file="sounds.txt">${sounds}</echo>

2 个答案:

答案 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>