Wie lösche ich ein Diret von Verzeichnissen mit Ant?
Frage
Ich möchte alle Verzeichnisse und Unterverzeichnisse unter einem Root -Verzeichnis löschen, das in ihren Namen "TMP" enthält. Dies sollte auch alle .SVN -Dateien enthalten. Meine erste Vermutung ist zu verwenden
<delete>
<dirset dir="${root}">
<include name="**/*tmp*" />
</dirset>
</delete>
Dies scheint nicht zu funktionieren, da Sie a nicht nisten können dirset
in einem delete
Schild.
Ist dies ein korrekter Ansatz oder sollte ich etwas anderes tun?
- Ameisenversion == 1.6.5.
- Java Version == 1.6.0_04
Lösung
Hier ist die Antwort, die für mich funktioniert hat:
<delete includeemptydirs="true">
<fileset dir="${root}" defaultexcludes="false">
<include name="**/*tmp*/**" />
</fileset>
</delete>
Ich hatte eine zusätzliche Komplikation, die ich entfernen musste .svn
Verzeichnisse auch. Mit defaultexcludes
, .*
Die Dateien wurden ausgeschlossen, und so waren die leeren Verzeichnisse nicht wirklich leer und wurden also nicht entfernt.
Das Attribut includeemptydirs
(Danke, Fliche, XL-Plüschhase) ermöglicht das Nachverfolgung **
Wildcard, um der leeren Saite zu entsprechen.
Andere Tipps
Versuchen:
<delete includeemptydirs="true">
<fileset dir="${root}">
<include name="**/*tmp*/*" />
</fileset>
</delete>
Danke Fliche!
Ich wollte nur hinzufügen, dass der Teil der Lösung, der für mich funktioniert hat /**
bis zum Ende des Pfades. Ich habe Folgendes ausprobiert, um Eclipse -Verzeichnisse zu löschen:
<delete includeemptydirs="true">
<fileset dir="${basedir}" includes"**/.settings">
</delete>
Aber es funktionierte nicht, bis ich es in Folgendes geändert habe:
<delete includeemptydirs="true">
<fileset dir="${basedir}" includes"**/.settings/**">
</delete>
Aus irgendeinem Grund anhängen /**
In dem Pfad löscht Dateien im Matching-Verzeichnis, alle Dateien in allen Unterdirektorien, den Unterverzeichnissen und in den passenden Verzeichnissen. Anhang /*
Löscht nur Dateien in das Matching -Verzeichnis, löscht das Matching -Verzeichnis jedoch nicht.