IF删除符号链接的声明

时间:2014-05-08 13:59:33

标签: shell unix

我正在尝试删除在终端上出现的错误(它让我很烦恼,因为它不是我需要担心的错误)。

我有以下代码来检查符号链接是否损坏,如果链接被破坏,它将删除链接:

find /usr/lib/libdb.so -xtype l -delete

如何将其更改为iIF语句?

if [ broken link ] then;
    delete file
else
    do nothing
fi

有人能为我解释这个吗?

3 个答案:

答案 0 :(得分:2)

您可以使用此查找:

find /usr/lib/libdb.so -type l -not -exec test -e '{}' \; -print -delete

-not -test -e将仅检测损坏的文件(链接)并在打印后将其删除。

答案 1 :(得分:1)

未经测试但试一试

FILES=`find /usr/lib/libdb.so | grep -v '\.disabled$' | sort`

for F in $FILES; do
    if [ -L $F ]; then
        if readlink -q $F >/dev/null ; then
            delete file
        else
            DO NOTHING
        fi
    fi
done

答案 2 :(得分:1)

要按照您的方法操作,您可以尝试以下命令:

if [ "`find /usr/lib/libdb.so -type l -xtype l`" != "" ]; then
    echo delete file
else
    echo do nothing
fi

或更简洁:

find /usr/lib/libdb.so -type l -xtype l -print -delete