如何:查找符号链接的名称

如何:查找符号链接的名称

我创建了一个符号链接ln -s /home/orca/www/* /var/,现在我需要删除它。我需要移动所有的网络文件,因为我的文件/var/www已满。 /home/这是我所做的

我看到从这里我只是简单地说rm symlink_name,但是名字到底是什么?

rm /home/orca/www/*                           ? 

尽管我读过很多文章,但我还是倾向于把事情搞倒,因为我本质上是非正统的。这是一个实时生产服务器,因此我在采取行动之前会谨慎行事。少即是多。我宁愿安全,也不愿抱歉。备份已到位。

答案1

请参阅文档曼林

您使用了第三种形式

ln [OPTION]... TARGET... DIRECTORY

这将为所有人创建链接目标进入目录

您的命令已为 中的所有文件和目录(以及其他对象(如果有))创建(或尝试创建)链接/home/orca/www如果该名称已存在于 中,则对于其中一些人来说可能会失败/var。 (在这种情况下,您的命令可能会打印错误消息。)

由于/var通常不为空,因此您不能简单地删除所有内容。

我现在能建议的最好办法是删除/home/orca/wwwfrom中存在的所有名称/var(如果它是符号链接)。

此循环将显示将删除的内容:

for i in /home/orca/www/*
do
    l=/var/"${i##*/}"
    if [ -h "$l" ]
    then
        echo rm "$l"
    fi
done

检查输出。如果这是您想要的,请删除echo来真正执行rm命令。

for i in /home/orca/www/*
do
    l=/var/"${i##*/}"
    if [ -h "$l" ]
    then
        rm "$l"
    fi
done

答案2

zsh

rm /var/*(@m-1)

/var将删除过去 24 小时内创建的所有符号链接。

尽管:

rm /var/*(@m-1e['[[ $REPLY:P = /home/orca/www/* ]]'])

将删除过去 24 小时内创建的所有符号链接真实路径(规范绝对路径)与模式匹配(如果、或其中的任何文件本身有符号链接,则/home/orca/www/*无法正常工作)。/home/home/orca/home/orca/www

(如果您只想在删除文件之前查看列表,请替换rm为)。ls -ld

使用 GNU find,您还可以执行以下操作:

find /var -maxdepth 1 -mtime -1 -lname '/home/orca/www/*' -delete

删除/var过去 24 小时内创建的目标与/home/orca/www/*模式匹配的所有符号链接。

(如果您想在删除文件之前查看列表,请替换-delete为)-ls

相关内容