Ant Dirset всех подкаталогов, содержащих файлы

Мне нужно создать каталог, содержащий все низкоуровневые каталоги, содержащие файлы. Так, например, такая структура, как:

.
├── _a
├── _b
|   ├── file1.class
|   └── file2.class
├── _c
|   └── _d
|        └── file3.class
├── _e
|   ├── _f
|   └── _g
└── _h
    └── file4.class

Приведет к набору каталогов:

./b/
./c/d/
./h/

Как я мог этого добиться?


person Redmatters    schedule 19.08.2017    source источник


Ответы (2)


Я нашел решение: сначала создать набор файлов в каталоге, который мне нужно было отсканировать, а затем использовать преобразование пути, чтобы получить родительские каталоги всех файлов и получить относительный путь.

Все, что осталось, это создать набор каталогов с включением, которое указывает пути из pathconvert (это также удаляет повторяющиеся записи каталога).

<pathconvert pathsep="," property="filePaths">
    <map from="${basedir}/" to="" />
    <!-- get parent of file -->
    <regexpmapper from="(.*)\${file.separator}" to="\1" />
    <path>
        <!-- change dir to your directory -->
        <fileset dir="${basedir}/dir" casesensitive="yes">
            <include name="**/*.*" />
        </fileset>
    </path>
</pathconvert>

<dirset dir="${basedir}/" casesensitive="yes" includes="${filePaths}" />
person Redmatters    schedule 21.08.2017

Не уверен, в какой задаче вы хотели.

В любом случае, попробуйте fileset, как указано ниже:

<fileset dir="${base.dir}" casesensitive="yes">
  <include name="**/*.*"/>
</fileset>
person Rao    schedule 21.08.2017