在sardi图标主题中,我注意到有符号链接指向原始图像的符号链接。
命令
ls -lR . | grep ^l | wc
告诉我,我有3511个符号链接,共有5个图标集。 要检查的15,000个链接。
是否有(bash)方式向我显示指向另一个符号链接的所有链接?
答案 0 :(得分:0)
以下是使用find
和一些bash功能的解决方案:
shopt -s extglob
find . -type l | while read -r; do
t="$(readlink "$REPLY")"
if [[ "$t" != /* ]]; then
t="${REPLY%%*([^/])}$t"
fi
[ -L "$t" ] && echo "$REPLY"
done
或全部在一行:
find . -type l | while read -r; do t="$(readlink "$REPLY")"; if [[ "$t" != /* ]]; then t="${REPLY%%*([^/])}$t"; fi; [ -L "$t" ] && echo "$REPLY"; done
find . -type l
找到所有符号链接。$REPLY
,我们使用$t
获取其目标readlink
。/
开头),我们会在原始路径$REPLY
前面加上dirname(表达式${REPLY%%*([^/])}
会删除所有尾随名称非斜线字符)。-L
),我们会输出原始名称$REPLY
。必须启用extglob
扩展程序才能使*([^/])
生效。