如何查找目录是否具有符号链接以及任何其他名称

如何查找目录是否具有符号链接以及任何其他名称
lrwxrwxrwx.   1 oracle   oinstall    10 Oct 14 03:47 abc -> xyz
drwxr-xr-x.   6 oracle   oinstall     4 Oct 26 21:11 xyz

我想找到 xyz 有一个名为 abc 的符号链接

答案1

不存在对文件或目录的反向引用或符号链接计数。

例如,删除 xyz 目录是完全有效的。任何符号链接的存在都不会阻止这种情况,也不会阻止 xyz 中的数据被破坏。任何符号链接只有在尝试打开它们时才会被识别为无效 - 它们将成为“损坏的链接”。

对于以下情况,情况会大不相同:硬链接

答案2

zsh

print -rC1 - **/*(ND@e['[[ $REPLY -ef xyz ]]'])

print raw on 1 Column 类型为符号链接 ( ) 的文件,@具有任何名称 ( *),位于子目录 ( ) 下和子目录级别 ( **/),包括隐藏目录 ( D),如果没有匹配 ( ),则不会抱怨,并且这些文件与符号链接解析后的N文件相同xyz( -ef)。

请注意,它还会报告到另一个符号链接的符号链接或到xyz.


如果您只想查找目标是文字 string 的符号链接xyz,那么只需:

find . -lname xyz

答案3

abc如果您想查找当前目录中命名为文件的所有链接,xyz可以使用以下命令来完成:

find -L / -samefile `readlink -f xyz` -name abc

readlink -f xyz可以替换为文件的完整路径(实际上它是针对当前目录中的文件执行的)。

如果您知道确切的链接名称,但只想查找xyz具有任何名称的文件的所有链接,则可以像name这样省略:

find -L / -samefile `readlink -f xyz`

您还可以2> /dev/null在命令末尾添加以抑制“权限被拒绝”警告。

相关内容