我使用 mklink 在 Windows 7 文件系统上创建了一些硬链接。那是很久以前的事了,我记不清在哪里创建了哪些文件。当我使用资源管理器时,所有文件看起来都一样。当我使用命令行并输入“dir”时,它们看起来都一样。
如何查找硬链接?或者如何确定特定文件是否是硬链接?
答案1
全部文件是硬链接,链接数至少为 1。
这就是文件看起来相同的原因。它们是相同。你似乎正在寻找的是包含超过一个链接到文件。除了链接数(以及属性和日期戳方面的一些奇怪行为)之外,几乎没有什么可以区分链接数大于 1 的文件和链接数为 1 的文件。
和那find
使用 Microsoft 的命令检查非常简单适用于 Linux 的 Windows 子系统:find . -links +1
。
ps Windows Subsystem for Linux 以前在 2008 年被称为“基于 UNIX 的应用程序子系统”,适用于 Windows-Server-2008(有关更多信息,请阅读此处https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc772343(v=ws.11)?redirectedfrom=MSDN)。
答案2
在 Windows 7 上(也适用于 Windows 10),使用命令:
fsutil hardlink list MyFileName.txt
它列出了所有指向名为 的文件的硬链接MyFileName.txt
。
答案3
不幸的是,如果不查看每个文件,操作系统就无法找到所有的硬链接。
对于 Explorer,你可以下载非常方便的链接外壳扩展,它用类似红色快捷方式的箭头覆盖带有硬链接的文件。
通过 Explorer 的上下文菜单创建硬链接、符号链接和连接也变得相当轻松。
奖金闲聊:
从技术上讲,所有文件都是硬链接。因此,您实际上要查找的是具有多个硬链接的文件。
答案4
一次性检查的简单方法:文件属性是否一起改变?
如果你想测试文件A
和是否B
是指向相同内容的硬链接,并且你不想安装或运行任何东西,请打开特性文件窗口A
并切换例如其只读属性。现在打开特性窗口,B
查看文件属性是否A
也在此处发生变化。如果是,则答案是肯定的。
为什么这样做有效?因为相关的硬链接共享同一组文件属性和时间戳。
话虽如此,也可以用文件的时间戳进行同样的测试,但它们不能像只读标志以执行检查。