如何删除带符号链接的目录,而不删除其目标?

时间:2012-10-05 06:51:16

标签: ant symlink delete-file

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

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

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

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

2 个答案:

答案 0 :(得分:4)

我找到了this bugreport

解决方案是使用文件集。

<delete>
  <fileset dir="/some/folder/path/" followsymlinks="false"/>
</delete>

编辑:上面的内容不会删除符号链接。以下内容删除文件夹中的所有符号链接。我找到了here

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

在此之后,使用delete dir应该是安全的。

答案 1 :(得分: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>