Как распечатать набор файлов в файл, одно имя файла в строке?
У меня есть заполненный набор файлов, и мне нужно распечатать соответствующие имена файлов в текстовый файл.
Я пробовал это:
<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.
Вот script, с которым я закончил:
<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>
Ответы
Ответ 1
Используйте задачу 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
Так как Ant 1.6 вы можете использовать toString:
<echo file="sounds.txt">${toString:myfileset}</echo>