Как я могу напечатать набор файлов в файл, по одному имени файла в строке? - PullRequest
43 голосов
/ 22 сентября 2009

У меня есть заполненный набор файлов, и мне нужно напечатать соответствующие имена файлов в текстовом файле.

Я пробовал это:

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

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

, который печатает все файлы в одну строку, разделенные точкой с запятой. Мне нужно иметь один файл на строку. Как я могу сделать это, не прибегая к вызову команд ОС или написанию кода Java?

UPDATE

Ах, следовало бы быть более конкретным - список не должен содержать каталогов. В любом случае я отмечаю 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 ]

67 голосов
/ 22 сентября 2009

Используйте задачу 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 голос
/ 02 февраля 2017

Начиная с Ant 1.6 вы можете использовать toString :

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