44

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

我试过这个:

<fileset id="myfileset" dir="../sounds">
    <include name="*.wav" />
    <include name="*.ogg" />
</fileset>

<property name="sounds" refid="myfileset" />
<echo file="sounds.txt">${sounds}</echo>

它将所有文件打印在一行上,用分号分隔。我需要每行有一个文件。在不求助于调用操作系统命令或编写 Java 代码的情况下如何做到这一点?

更新

啊,应该更具体 - 列表不能包含目录。无论如何,我将 ChssPly76 标记为已接受的答案,因为pathconvert命令正是我所缺少的。为了剥离目录并仅列出文件名,我使用了“flatten”映射器

这是我最终得到的脚本:

<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>
4

2 回答 2

69

使用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>
于 2009-09-21T21:11:47.583 回答
4

从 Ant 1.6 开始,您可以使用toString

<echo file="sounds.txt">${toString:myfileset}</echo>
于 2017-02-02T08:44:40.847 回答