To nie jest takie trudne ...
<copy todir="${copy.dir}">
<fileset dir="temp">
<include name="**/dir3/**"/>
</fileset>
</copy>
Podczas korzystania z dyrektywy include
będzie zawierał tylko pliki pasujące do wzorca, który użytkownik poda. W tym przypadku kopiuję tylko te pliki, które mają /dir3/
gdzieś w pełnej nazwie ścieżki. Obejmuje to podkatalogi pod numerem dir3
i wszystkie pliki pod numerem dir3
.
Można użyć dyrektywy exclude
przesłonić dyrektyw include
:
<copy todir="${copy.dir}">
<fileset dir="temp">
<include name="**/dir3/**"/>
<exclude name="**/dir3/*"/>
</fileset>
</copy>
Spowoduje to skopiowanie wszystkich podkatalogów i plików w tych katalogach podrzędnych, ale nie pliki pod samą dir3
. *
dopasowuje wszystkie pliki w katalogu, podczas gdy **
dopasowuje wszystkie pliki w całym drzewie katalogów.
Zauważ, że utworzy to katalog temp/dir2/dir3
. Jeśli chcę temp/dir3
, muszę ustawić mój zestaw plików do katalogu nadrzędnego dir3
:
<copy todir="${copy.dir}">
<fileset dir="temp/dir2">
<include name="dir3/**"/>
</fileset>
</copy>
ten sposób:
<copy todir="${copy.dir}">
<fileset dir="temp/dir2/dir3"/>
</copy>
stworzy katalog temp
ze wszystkich plików bezpośrednio pod dir3
bezpośrednio pod temp
. Będzie również katalog temp/dir4
i temp/dir5
zawierający wszystkie pliki (i drzewa katalogów) w tych katalogach.