如何删除指向特定文件夹中文件的符号链接?

如何删除指向特定文件夹中文件的符号链接?

我认为最好用一个例子来解释:

lrwxrwxrwx 1 root   root      21 Mar 31 08:44 awk -> /etc/alternatives/awk*
-rwxr-xr-x 1 root   root     45K Apr  8  2015 b43-fwcutter*
lrwxrwxrwx 1 root   root      35 Apr  1 21:42 backup-config -> /home/myuser/scripts/backup-config.sh
lrwxrwxrwx 1 root   root      37 Apr  1 21:42 backup-to-server -> /home/myuser/scripts/backup-to-server.sh

我想删除所有指向 /home/myuser/scripts 内文件的符号链接。

在这个例子中。我希望删除备份配置和备份到服务器。

谢谢!

附注我想删除的文件夹中有其他符号链接,但它不是从备份开始的,所以我无法真正使用模式。

答案1

循环文件并将符号链接与模式进行匹配。这应该适用于具有绝对路径的直接链接(不是类似../../something, 或跳过多个符号链接的东西。)

for f in * ; do
    [ -L "$f" ] || continue;                      # skip anything but symlinks
    l=$(readlink "$f")                            # read the link contents
    case "$l" in 
        /home/myuser/scripts/*) echo rm "$f" ;;   # match against a pattern
    esac
done

相关内容