如何在 ANT 脚本中使用 Linux "find" 和“-exec”命令?
How to use Linux "find" with "-exec" command within an ANT script?
考虑以下 ANT 脚本:
<project name="MyProject" default="mainTarget" basedir=".">
<target name="mainTarget">
<exec executable="find">
<arg value="/home/user/Downloads/"/>
<arg value="-type"/>
<arg value="f"/>
<arg value="-exec"/>
<arg value="dd if=/dev/null of={} \;"/>
</exec>
</target>
</project>
输出为:
Buildfile: /home/user/workspace/ant/build.xml
wrap:
[exec] find: missing argument to `-exec'
[exec] Result: 1
BUILD SUCCESSFUL
Total time: 0 seconds
我的主要目标是使用ANT 清除目录及其子目录中所有文件的内容。我的意思是只清除文件内容,而不是删除它们。
find
程序的不寻常之处在于 -exec
选项不接受单个参数。相反,find
会继续读取 -exec
选项之后的参数,直到找到一个分号 (;
) 或加号 (+
) 的参数。
在你的例子中...
<exec executable="find">
<arg value="/home/user/Downloads/"/>
<arg value="-type"/>
<arg value="f"/>
<arg value="-exec"/>
<arg value="dd if=/dev/null of={} \;"/>
</exec>
...Ant 在启动 find
之前用引号将 dd if=/dev/null of={} \;
括起来。 find
运行s时,-exec
后只有一个参数:"dd if=/dev/null of={} \;"
。 find
报告错误,因为没有简单的参数 ;
或 +
.
要让 Ant 运行 find
,将 dd
命令分成几个 <arg>
元素...
<exec executable="find">
<arg value="/home/user/Downloads"/>
<arg value="-type"/>
<arg value="f"/>
<arg value="-exec"/>
<arg value="dd"/>
<arg value="if=/dev/null"/>
<arg value="of={}"/>
<arg value=";"/>
</exec>
请注意,最后一个参数 <arg value=";"/>
在分号前没有反斜杠。当从 shell(例如 Bash)中 运行 宁 find
时,反斜杠是必需的。但是,Ant 脚本不调用 shell,因此无需转义分号。
考虑以下 ANT 脚本:
<project name="MyProject" default="mainTarget" basedir=".">
<target name="mainTarget">
<exec executable="find">
<arg value="/home/user/Downloads/"/>
<arg value="-type"/>
<arg value="f"/>
<arg value="-exec"/>
<arg value="dd if=/dev/null of={} \;"/>
</exec>
</target>
</project>
输出为:
Buildfile: /home/user/workspace/ant/build.xml
wrap:
[exec] find: missing argument to `-exec'
[exec] Result: 1
BUILD SUCCESSFUL
Total time: 0 seconds
我的主要目标是使用ANT 清除目录及其子目录中所有文件的内容。我的意思是只清除文件内容,而不是删除它们。
find
程序的不寻常之处在于 -exec
选项不接受单个参数。相反,find
会继续读取 -exec
选项之后的参数,直到找到一个分号 (;
) 或加号 (+
) 的参数。
在你的例子中...
<exec executable="find">
<arg value="/home/user/Downloads/"/>
<arg value="-type"/>
<arg value="f"/>
<arg value="-exec"/>
<arg value="dd if=/dev/null of={} \;"/>
</exec>
...Ant 在启动 find
之前用引号将 dd if=/dev/null of={} \;
括起来。 find
运行s时,-exec
后只有一个参数:"dd if=/dev/null of={} \;"
。 find
报告错误,因为没有简单的参数 ;
或 +
.
要让 Ant 运行 find
,将 dd
命令分成几个 <arg>
元素...
<exec executable="find">
<arg value="/home/user/Downloads"/>
<arg value="-type"/>
<arg value="f"/>
<arg value="-exec"/>
<arg value="dd"/>
<arg value="if=/dev/null"/>
<arg value="of={}"/>
<arg value=";"/>
</exec>
请注意,最后一个参数 <arg value=";"/>
在分号前没有反斜杠。当从 shell(例如 Bash)中 运行 宁 find
时,反斜杠是必需的。但是,Ant 脚本不调用 shell,因此无需转义分号。