Można użyć regexp
mapowania:
<copy todir="${dest.dir}">
<fileset dir="${src.dir}" casesensitive="yes">
<include name="**/*.pdf"/>
</fileset>
<mapper type="regexp" from="^(.*)/(.*\.pdf)" to="\1/x/\2" />
</copy>
mam używany ciężko kodowanych file.separators skrócić. Zasadniczo podzielisz ścieżkę do pliku wejściowego (z) na katalog i nazwę pliku (przechwytuj \1
i \2
), a następnie wstaw dodatkowy element między nimi (do).
Nie jestem pewien na twoim przykładzie - wygląda na to, że chcesz dopasować "bar.pdf" i zmienić jego nazwę na "foo.pdf", a także zmienić katalog. Jeśli musisz to zrobić, możesz rozważyć łańcuchowym kilka prostszych mappers regexp, zamiast próbować gotować jeden złożony:
<copy todir="${dest.dir}">
<fileset dir="${src.dir}" casesensitive="yes">
<include name="**/*.pdf"/>
</fileset>
<chainedmapper>
<mapper type="regexp" from="^(.*)/(.*\.pdf)" to="\1/x/\2" />
<mapper type="regexp" from="^(.*)/(.*\.pdf)" to="\1/foo.pdf" />
</chainedmapper>
</copy>
Przy zastosowaniu glob
mapowania, trzeba podać jeden wieloznaczny *
w z zakresu:
Zarówno do iz są wymagane i zdefiniować wzory, które może zawierać co najwyżej jedną *. Dla każdego pliku źródłowego, który jest zgodny z wzorcem , docelowa nazwa pliku zostanie skonstruowana z na wzór poprzez podstawienie * w do wzoru z tekstem, który dopasowuje * w wzorzec z. Nazwy plików źródłowych, które nie pasują do wzorca będą ignorowane.
więc coś takiego może działać:
<mapper type="glob" from="*/foo.pdf" to="*/x/foo.pdf" />
Niestety, byłem kasował swoje nazwy plików do punktu w błąd. Obaj powinni zostać przemianowani na foo.pdf. W każdym razie pierwszy blok kodu zrobił to za mnie. Dziękuję Ci! Jakieś pomysły na to, dlaczego mój globplanet był błędny? – GJTorikian
@ GJTorikian - Dodałem notatkę do globalnego programu odwzorowującego, hth. –