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