如何在OSX终端中查看一个目录有多少个硬链接?

4

如何在终端中查看OSX目录有多少硬链接?

在OSX中,您可以创建指向目录的硬链接。这就是Time Machine的工作原理。我想知道哪些目录存在硬链接,以便了解哪些目录是新的Time Machine备份。

我尝试过使用ls -lstat -f“%l%N”*,但似乎都没有给出正确的答案。

有人知道如何做到这一点吗?

2个回答

2
“ls -l” 是在目录中显示硬链接文件的正确方法。
维基百科关于硬链接的文章中得知:
大多数现代操作系统不允许在目录上创建硬链接,以防止无限递归。此外,在目录上创建硬链接会导致父目录条目的不一致。一个显著的例外是 Mac OS X v10.5(Leopard),仅在 Time Machine 备份机制中使用目录上的硬链接。通常使用符号链接和 NTFS 路径连接点来替代这个用途。

3
当您从其他来源复制内容时,请明确表示您不是文本的作者,恰当地引用出处,并提供原始信息来源的链接。Stack Overflow 不支持抄袭行为。 - user557219
感谢Bavarious的提醒,我会注意处理。 - Dumb Code
“ls -l” 命令在目录中对硬链接的 文件 运行良好,但对硬链接的 目录 给出了错误的结果。例如,如果我创建一个文件夹,“ls -l” 显示它有 2 个链接。这是正确的吗?我是否漏掉了什么? - jasongregori
1
实际上,我非常确定那个数字是目录中文件的数量。 - jasongregori

1

我认为即使是时间机器也不能在文件系统之间进行硬链接,因为这是定义上的。我相信创建硬链接只会创建一个具有与原始文件(或目录)相同的inode号码的文件,并且inode仅在给定的文件系统内是唯一的。

我认为没有办法计算有多少符号链接指向一个文件或目录,因为可以有指向未挂载卷上的文件的符号链接。

更新:当您创建一个目录时,它会自动有两个硬链接。一个来自目录本身(“。”),另一个来自其父目录(“..”)。在目录上执行ls -ld命令将向您提供指向它的硬链接数。


我不是在谈论跨文件系统的硬链接。它是在一个文件系统内部。 - jasongregori
你提到了Time Machine,它需要备份在一个单独的文件系统上,因此不能使用硬链接。所以我想你可能是指符号链接。 - Eric
抱歉回复晚了。我不确定你的意思。Time Machine确实使用硬链接,但它们都指向同一文件系统中的其他文件夹。因此,您在Time Machine驱动器上有指向该驱动器上其他文件夹的文件夹。 - jasongregori
目录链接计数表示包括不可见项目、...在内的“包含”项目数量。命令 ls -la 将显示包含的项目,包括 不可见项目... - l --marc l

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接