我正在运行一个 Ant 命令,例如:
<delete dir="/some/folder/path/"/>
该文件夹/path/
包含一些文件、文件夹和一些符号链接。文件和文件夹被删除,但该命令尝试删除target
符号链接的目录,这会产生错误。
<delete>
当我在父文件夹 ( /path/
)上运行命令时,我不想删除目标目录,而只想删除符号链接。
我正在运行一个 Ant 命令,例如:
<delete dir="/some/folder/path/"/>
该文件夹/path/
包含一些文件、文件夹和一些符号链接。文件和文件夹被删除,但该命令尝试删除target
符号链接的目录,这会产生错误。
<delete>
当我在父文件夹 ( /path/
)上运行命令时,我不想删除目标目录,而只想删除符号链接。
我发现了这个错误报告。
一个解决方案是使用文件集。
<delete>
<fileset dir="/some/folder/path/" followsymlinks="false"/>
</delete>
编辑:不过,上面并没有删除符号链接。以下删除文件夹中的所有符号链接。我在这里找到了。
<exec output="/path/to/symlink/list" executable="/usr/bin/find">
<arg value="/some/folder/path/"/>
<arg value="-type"/>
<arg value="l"/>
</exec>
<fileset id="victims" dir="/some/folder/path/">
<includesfile name="/path/to/symlink/list>
</fileset>
在此之后,使用删除目录应该是安全的。
使用 bash 中的“rm -rf”。我找不到更好的解决方案
<macrodef name="bash_rm">
<attribute name="dir" />
<sequential>
<echo message="Remove directory @{dir}"/>
<exec executable="rm" >
<arg value="-rf"/>
<arg value="@{dir}" />
</exec>
</sequential>
</macrodef>