我已在多个路径上为特定文件或目录创建了许多符号链接。我想要创建符号链接路径(位置)的完整列表。
例子:
我在许多目录上为目录创建了符号链接~/Pictures
。如何列出指向该~/Pictures
目录的所有符号链接?
这可能吗?如果可以,那怎么办?
答案1
以下是一个例子:
find -L /dir/to/start -xtype l -samefile ~/Pictures
或者,也许更好:
find -L /dir/to/start -xtype l -samefile ~/Pictures 2>/dev/null
摆脱一些错误,如Permission denied
、Too many levels of symbolic links
或,当没有正确的权限或其他情况时,这些错误会抛出File system loop detected
。find
-L
- 跟随符号链接。-xtype l
- 文件是符号链接-samefile name
- 文件引用与 相同的 inodename
。当-L
生效时,这可以包括符号链接。
笔记:
- 使用小写字母 L
-xtype l
,而不是数字 1。 - 在 macOS / Darwin 上,
-xtype
是-type
。
答案2
非常简单,使用选项-lname
:
find / -lname /path/to/original/dir
从man find
:
-lname pattern
File is a symbolic link whose contents match shell pattern pattern. The
metacharacters do not treat `/' or `.' specially. If the -L option or the
-follow option is in effect, this test returns false unless the symbolic link
is broken.
笔记:请记住,符号链接可能位于任何地方,包括远程系统(如果您正在共享文件),因此您可能无法找到它们全部。
答案3
尝试这个 :
ls -i ~/
277566 Pictures
find . -follow -inum 277566
(查找具有相同索引节点数字 )
它将显示其所有符号链接路径。
答案4
我最喜欢这句台词:
find . -maxdepth 1 -type l -exec readlink -f '{}' \;
參考文獻:
https://unix.stackexchange.com/questions/21984/list-symlinks-in-current-directory