What version of Ant are you using? You seem to take the hard way:
If you're using at least version 1.3, you can simply do this:
<move file="/tmp/myDir/test/hello/search"
todir="/tmp/myDir/test/hello/search_"/>
If it's earlier than version 1.3:
<move todir="/tmp/myDir/test/hello/search_">
<fileset dir="/tmp/myDir/test/hello/search"/>
</move>
No need to use a mapper or anything:
BTW, the problem you're running into is that regex is naturally
greedy, so it always takes the biggest chunk it can to make the
match. Since you can easily define the directory using simpler
globbing expressions, you could have use that. Or, you can use the
"Reluctant" qualifier which will only take the very first match it
can find:
This: <regexpmapper from="(.*?)(${oldValue})(.*)" to="\1${newValue}\3"
Instead of: <regexpmapper from="(.*)(${oldValue})(.*)" to="\1$
{newValue}\3"
See: http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/
Pattern.html for more information.
On Jun 13, 2007, at 3:31 AM, Cesar Martinez Izquierdo wrote:
Hi, I'm trying to rename every "search" directory in a tree to
"search_", but I'm not able to find the right way to do it.
For example, if I have the files:
/tmp/myDir/test/hello/search/Hello.html
/tmp/myDir/test/hello/search/nice/lists/search/Greetings.html
/tmp/myDir/test/hello/searchstrings/Hello.html
/tmp/myDir/search/Regards.html
I want to rename them to:
/tmp/myDir/test/hello/search_/Hello.html
/tmp/myDir/test/hello/search_/nice/lists/search_/Greetings.html
/tmp/myDir/test/hello/searchstrings/Hello.html
/tmp/myDir/search_/Regards.html
I've read the docs and searched in Google, but I didn't find the
solution.
I have tried the following:
-------------------------------
<antcall target="renameFiles">
<param name="targetDir" value="/tmp/myDir" />
<param name="oldValue" value="/search"/>
<param name="newValue" value="/search_" />
</antcall>
<target name="renameDirs"
description="Rename directories frin ${oldValue} to ${newValue}">
<move todir="${targetDir}" verbose="yes">
<fileset
dir="${targetDir}"
includes="**/*"/>
<regexpmapper from="(.*)(${oldValue})(.*)" to="\1${newValue}\3"
handledirsep="true"/>
</move>
</target>
-----------------------
But I get the results:
/tmp/myDir/test/hello/search_/Hello.html
/tmp/myDir/test/hello/search_/nice/lists [empty dir]
/tmp/myDir/test/hello/search/nice/lists/search_/Greetings.html
/tmp/myDir/test/hello/search_strings/Hello.html
/tmp/myDir/search/Regards.html
which is not the result I expected.
Is there a way to perform this task? If it's possible, it would be
very
useful to include it in the documentation, as I've found in Google
several people trying to do it, but none of them found the solution.
Regards,
--
César Martínez Izquierdo
Equipo de desarrollo gvSIG
http://www.gvsig.gva.es
IVER T.I.
C/ Salamanca 50
46005 Valencia - Spain
http://www.iver.es
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
David Weintraub
[EMAIL PROTECTED]
[EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]