3

我正在运行一个 Ant 命令,例如:

<delete dir="/some/folder/path/"/>

该文件夹/path/包含一些文件、文件夹和一些符号链接。文件和文件夹被删除,但该命令尝试删除target符号链接的目录,这会产生错误。

<delete>当我在父文件夹 ( /path/)上运行命令时,我不想删除目标目录,而只想删除符号链接。

4

2 回答 2

4

我发现了这个错误报告

一个解决方案是使用文件集。

<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> 

在此之后,使用删除目录应该是安全的。

于 2012-10-05T07:00:01.693 回答
0

使用 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>
于 2018-06-08T08:43:55.673 回答