如何使用Ant重命名许多文件和文件夹?对于文件,我知道我可以这样做; question
如何为文件夹做同样的事情?
例如 文件夹集(输入)
com.google.appengine.eclipse.sdkbundle_1.5.2.r37v201107211953
com.google.gdt.eclipse.designer.doc.user_2.3.2.r37x201107161328
com.google.gdt.eclipse.designer.hosted.2_0.webkit_win32_2.3.2.r37x201107161253
org.eclipse.acceleo.common_3.1.0.v20110607-0602.jar
输出:
com.google.appengine.eclipse.sdkbundle_1.5.2
com.google.gdt.eclipse.designer.doc.user_2.3.2
com.google.gdt.eclipse.designer.hosted.2_0.webkit_win32_2.3.2
org.eclipse.acceleo.common_3.1.0.jar
答案 0 :(得分:2)
对于复杂的操作,我使用groovy ANT task。
以下示例将使用正则表达式重命名您的文件和目录:
<project name="demo" default="rename">
<target name="bootstrap">
<mkdir dir="${user.home}/.ant/lib"/>
<get dest="${user.home}/.ant/lib/groovy-all.jar" src="http://search.maven.org/remotecontent?filepath=org/codehaus/groovy/groovy-all/2.0.6/groovy-all-2.0.6.jar"/>
</target>
<target name="rename">
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy"/>
<fileset id="filesToBeRenamed" dir="build"/>
<dirset id="dirsToBeRenamed" dir="build"/>
<groovy>
project.references.filesToBeRenamed.each {
String origName = it
String newName = origName.replaceAll(/_[0-9\.]+[a-z0-9\-]+/, "")
if (origName != newName) {
ant.move(file:origName, tofile:newName, verbose:"true")
}
}
project.references.dirsToBeRenamed.each {
String origName = it
String newName = origName.replaceAll(/_[0-9\.]+[a-z0-9\-]+/, "")
if (origName != newName) {
ant.move(file:origName, tofile:newName, verbose:"true")
}
}
</groovy>
</target>
</project>
注意:
答案 1 :(得分:0)
这将移动目录及其所有子目录和文件。
<move todir="${toDir}">
<fileset dir="${fromDir}"/>
</move>
答案 2 :(得分:0)
看看Ant-Contrib tasks。一个是<for>
任务。这将允许您指定多个目录,目录模式等。这样,您可以遍历目录和文件。
您可以将文件和目录复制到其他位置,然后使用Mapper映射文件名。 (<move>
任务也适用于地图制作者。)
我建议您将Ant-Contrib Jar file下载到项目中的目录${basedir}/antlib/ac
。然后在构建文件的开头执行此操作:
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<fileset dir="${basedir}/antilb/ac"/>
</classdef>
<taskdef>
这将定义ant-contrib任务并允许您使用它们。如果您正在使用版本控制系统并检查所有内容,则可以先检查您的项目并进行构建,而无需先安装Ant-Contrib。