如何删除符号链接未指向的所有子目录?

How do I delete all child directories not pointed at by a symlink?

我在 Ubuntu 16.04 上使用 bash shell。我有一个像这样设置的符号链接

$ ls -al /home/myuser/web/current
lrwxrwxrwx 1 myuser myuser 40 Feb 25 15:49 /home/myuser/web/current -> /path/to/main/releases20220225152608

“releases”目录包含其他几个目录

$ ls /path/to/main/releases
20220223111602
20220224122838
20220225152608

如何删除符号链接“/home/myuser/web/current”未指向的“/path/to/main/releases”中的所有其他子目录?

尝试

for dir in /path/to/main/releases/*/; do
    [[ $dir -ef /home/myuser/web/current ]] || echo rm -r -- "$dir"
done
  • [[ $path1 -ef $path2 ]] 测试检查两个路径是否引用磁盘上的相同项目(文件、目录、fifo 等),而不管任一路径中遍历的链接(硬链接或软链接) .
  • 如果您对生成的代码能够满足您的要求感到满意,请删除 echo