Utilizzando formica, rinominare una directory senza conoscere il percorso completo?
Domanda
Dato un file zip con una directory sconosciuta, come posso rinominare o spostare quella directory a un percorso normalizzato?
<!-- Going to fetch some stuff -->
<target name="get.remote">
<!-- Get the zipfile -->
<get src="http://myhost.com/package.zip"
dest="package.zip"/>
<!-- Unzip the file -->
<unzip src="package.zip"
dest="./"/>
<!-- Now there is a package-3d28djh3 directory. The part after package- is
a hash and cannot be known ahead of time -->
<!-- Remove the zipfile -->
<delete file="package.zip"/>
<!-- Now we need to rename "package-3d28djh3" to "package". My best attempt
is below, but it just moves package-3d28djh3 into package instead of
renaming the directory. -->
<!-- Make a new home for the contents. -->
<mkdir dir="package" />
<!-- Move the contents -->
<move todir="package/">
<fileset dir=".">
<include name="package-*/*"/>
</fileset>
</move>
</target>
Io non sono molto di un utente formica, tutta la comprensione sarebbe utile.
Grazie molto, -Matt
Soluzione
Questo sarà solo il lavoro fino a quando il dirset restituisce solo 1 punto.
<project name="Test rename" basedir=".">
<target name="rename">
<path id="package_name">
<dirset dir=".">
<include name="package-*"/>
</dirset>
</path>
<property name="pkg-name" refid="package_name" />
<echo message="renaming ${pkg-name} to package" />
<move file="${pkg-name}" tofile="package" />
</target>
</project>
Altri suggerimenti
Se non ci sono le sottodirectory all'interno della directory del pacchetto-3d28djh3 (o quello che viene chiamato una volta è stato estratto di esso) è possibile utilizzare
<move todir="package" flatten="true" />
<fileset dir=".">
<include name="package-*/*"/>
</fileset>
</move>
In caso contrario, utilizzare il mapper espressione regolare per l'attività mossa e sbarazzarsi di directory del pacchetto-xxx:
<move todir="package">
<fileset dir=".">
<include name="package-*/*"/>
</fileset>
<mapper type="regexp" from="^package-.*/(.*)" to="\1"/>
</move>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow