2
在sardi图标主题中,我注意到符号链接指向符号链接指向原始图像的符号链接。如何找到指向另一个符号链接的图标的符号链接
命令
ls -lR . | grep ^l | wc
显示我,我有3511个的符号链接次5个图标集。 15,000个链接检查。
是否有(bash)方式向我显示所有指向另一个符号链接的链接?
在sardi图标主题中,我注意到符号链接指向符号链接指向原始图像的符号链接。如何找到指向另一个符号链接的图标的符号链接
命令
ls -lR . | grep ^l | wc
显示我,我有3511个的符号链接次5个图标集。 15,000个链接检查。
是否有(bash)方式向我显示所有指向另一个符号链接的链接?
下面是使用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
,我们使用readlink
得到它的目标$t
。/
开始),我们在原路径$REPLY
(表达式${REPLY%%*([^/])}
删除所有尾随的非斜杠字符)前加上dirname。-L
),我们输出原始名称$REPLY
。必须启用extglob
扩展才能使*([^/])
正常工作。
链接,既硬又符号,只是一种方式。如果你想看到所有链接“指向”另一个链接,你必须检查整个系统中的所有链接,看看哪些链接指向指定的目标。基本上你需要做'find/-type l'并检查每个文件(如果它们指向目标,它的确会有几千个)。 –
可能的重复:https://stackoverflow.com/questions/6184849/symbolic-link-find-all-files-that-link-to-this-file –
@LeoIzen我不认为这是重复的。 – melpomene