如何查找并列出为特定文件创建的所有符号链接?


52

我在特定文件或目录的各种路径上创建了许多符号链接。我想要创建的符号链接路径(位置)的整个列表。

例:

我为~/Pictures许多目录上的目录创建了符号链接。如何列出到该~/Pictures目录的所有符号链接?

那可能吗?如果是,那怎么办?


您需要进行详尽的搜索,没有像硬链接那样存储任何计数。使用查找查看答案之一。
ctrl-alt-delor 2014年

Answers:


42

这是一个例子:

find -L /dir/to/start -xtype l -samefile ~/Pictures

或者,也许更好:

find -L /dir/to/start -xtype l -samefile ~/Pictures 2>/dev/null

消除一些错误,例如Permission deniedToo many levels of symbolic links或在没有正确权限或其他情况时将File system loop detectedfind抛出。

  • -L -遵循符号链接。

  • -xtype l -文件是符号链接

  • -samefile name-文件与引用相同的inode name。如果-L生效,这可以包括符号链接。

笔记:

  • 使用小写字母L in -xtype l,而不是数字1。
  • 在macOS / Darwin上-xtype-type

可以修改命令以查找包含路径的符号链接吗?例如,系统中可能链接到〜/ Pictures / A,〜/ Pictures / A / B / C的文件,或〜/ Pictures>子目录中的任何文件
2015年

7

很简单,使用选项-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.

注意:请记住,符号链接可能在任何地方,包括远程系统(如果要共享文件),因此可能无法完全找到它们。


还要注意,如果符号链接是相对路径,../dir则找不到绝对值,/path/to/original/dir您可以改用模式来排除误报-lname \*dir
Jason S

2

尝试这个 :

ls -i ~/

277566 Pictures

find . -follow -inum 277566(查找具有相同inode编号的目录)

它将显示其所有符号链接路径。


4
这将找到硬链接,而不是符号链接。硬链接共享索引节点号。符号链接具有不同的inode编号。符号链接的索引节点具有路径而不是阻止列表。
hildred

这个问题没有提到硬或软的符号链接
2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.