16

如何获取系统上或某个目录中所有链接文件的列表。我曾经创建链接,但随着时间的推移它们变得无法管理。我想要目录中所有此类链接的列表。任何人都可以帮忙吗?

4

4 回答 4

29

查找符号链接很容易:

% find . -type l

查找硬链接很棘手,因为如果相关目录的子目录也有子目录,那么这些子目录会增加硬链接计数。这就是子目录如何链接到 UNIX 中的父目录(它是..每个子目录中的条目)。

如果您只想查找链接文件(而不是目录),这将起作用:

% find . -type f \! -links 1

这是有效的,因为具有硬链接的文件链接计数 > 1,而未链接的文件的链接计数 == 1,因此此命令查找链接计数 <> 1 的所有文件

或者,在较新版本的find您可以使用:

% find . -type f -links +1

这与上述原因相同;但是,较新版本的 find 可以采用 +n 或 -n 而不仅仅是一个数字。这相当于分别测试大于 n 或小于 n 的情况。

于 2009-11-27T19:44:03.183 回答
3
find / -xdev -samefile filename
于 2013-03-13T10:45:45.063 回答
2

@OP,如果你有 GNU find,你可以使用 找到硬链接-printf "%n",例如

find /path -type f -printf "%f/%n/%i\n" | while IFS="/" read filename num_hlinks inum
do
 echo "Filename: $filename. Number of hard links: $num_hlinks, inode: $inum"
 # if 2 or more files have the same inode number, then they are hard links. 
 # you can therefore count how many $inum that are the same and determine those hard links, which 
 # you have to try doing yourself.
done
于 2009-11-28T01:15:42.373 回答
1

参见例如这里 https://www.gnu.org/software/findutils/manual/html_node/find_html/Hard-Links.html 或结合 Alnitak 和 amber_linux 的答案 find -L /where/to/search -samefile /some/link/to/file 来查找给定文件的所有硬链接和软链接。

于 2014-05-20T08:30:02.407 回答