从根目录开始打印完整的符号链接信息

从根目录开始打印完整的符号链接信息

我们有兴趣打印从根目录开始的所有符号链接信息。我们希望以以下格式打印信息:
symbolic name -> actual name [注意同一行]

我们尝试了以下方法,它为我们提供了符号名称和实际名称,但在不同的线路上
find . -type l -print -exec readlink -f {} \;

答案1

我不认为你离得很远。使用-printf而不是-print(假设你的版本find有它),你会得到这个

find / -type l -printf "%p -> " -exec readlink -f {} \;

输出示例

/bin/apropos -> /bin/whatis
/bin/awk -> /bin/gawk
/bin/bzcmp -> /bin/bzdiff

以供参考,

ls -gl /bin/apropos
lrwxrwxrwx 1 roaima 10 Mar 28 20:15 /bin/apropos -> whatis

对于损坏的链接,您将得到重击的行(-printf没有换行符)

答案2

zsh

for link (**/*(ND@^-@)) print -r -- "$link -> $link:P"

where@^-@将 glob 扩展限制为未损坏的符号链接文件(目标可访问的符号链接,是确定其规范路径的必要条件,相当于 GNUfind-type l ! -xtype l)。$link:P给出链接的实际路径(所有组件的符号链接解析后的规范绝对路径,类似于realpath()标准函数或 GNU 的作用readlink -f)。

相关内容