我想确定目录中所有损坏的符号链接。
由于不知道更好的解决方案,我尝试了这个简单的 bash one-liner(bash 版本是 4.2.46,可能值得一提,因为它有点过时了):
for f in $(ls); do test -L "$f" || continue; test -e "$f" || echo "$f deadlink"; done
不幸的是,这不起作用。我试着确定错误,如果我运行它
for f in $(ls); do test -L $f && echo "$f is a valid symlink"; done
尽管存在有效的符号链接,但不会产生任何输出。如果我运行相同的命令并$f
替换为实际文件名,它就可以工作。也f=filename; test -L $f && echo "$f is a valid symlink";
按预期工作,所以问题似乎是循环。
我错过了什么?