Я думаю, что вам нужно будет разбить его на шаги:
- Вывести список соответствующих файлов с помощью FTP
- Извлечь имена файлов из списка
- Сортировка имен файлов
- Возьмите первое или последнее имя файла из отсортированного списка
- Получить этот файл с помощью FTP
Поскольку ваши файлы именуются с помощью yyyyMMdd.<version>
, вы можете просто отсортировать файлы по имени, чтобы расположить их в порядке дат.
Шаг 1 : перечислить файлы примерно так:
<ftp action="list"
server="${server}" userid="${user}"
password="${password}" listing="list.txt">
<fileset>
<include name="Evolvenet_*"/>
</fileset>
</ftp>
Шаги 2-4 : Извлечь новейший файл из списка
<loadresource property="newest.file">
<concat>
<fileset file="list.txt"/>
</concat>
<filterchain>
<tokenfilter>
<replaceregex pattern=".*(Evolvenet_.*)" replace="\1"/>
</tokenfilter>
<sortfilter reverse="true"/>
<headfilter lines="1"/>
</filterchain>
</loadresource>
<echo message="newest.file ${newest.file}"/>
Шаг 5 : Получить этот файл с FTP
<ftp action="get"
server="${server}" userid="${user}"
password="${password}">
<fileset dir="download">
<include name="${newest.file}"/>
</fileset>
</ftp>
У меня естьответил, как будто Evolvenet_ * были файлы, но я заметил, что вы говорите, что они каталоги.Я думаю, что все, что нужно изменить, чтобы загрузить каталог, это предложение include в FTP get:
<include name="${newest.file}/**"/>
Чтобы вывести содержимое определенного каталога (а не каталога входа пользователя), используя dir
атрибут набора файлов для указания удаленного каталога, например
<fileset dir="/build/Evolvenet 2010">
<include name="*"/>
</fileset>