代码之家  ›  专栏  ›  技术社区  ›  Tomas Andrle

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

  •  42
  • Tomas Andrle  · 技术社区  · 15 年前

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

    我试过这个:

    <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 回复  |  直到 7 年前
        1
  •  66
  •   Michael-O    10 年前

    使用 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>
    
        2
  •  1
  •   R. Oosterholt Alex Vayda    7 年前

    自Ant 1.6以来,您可以使用 toString :

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