我认为最好用一个例子来解释:
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