为什么 ls -i 比 ls 慢?

Nht*_*_e0 0 ls inode directory-structure

我知道ls列出给定目录中文件的名称,ls -i显示名称和 inode 编号。

但是为什么会慢呢?

编辑:这发生在大目录中

名字和inode号一起存放在目录信息块中,为什么查询inode号需要更多的时间呢?

Jas*_*sen 8

strace显示我ls -i正在调用lstat()每个文件名

这将解释额外的工作。

鉴于 readdir() 已经返回了 inode 编号,这似乎是次优的

虽然这感觉像是一个错误,但这种行为是为了与挂载点保持一致。(见托马斯的评论)

  • 实际上它似乎是错误修复:http://git.savannah.gnu.org/gitweb/?p=coreutils.git;a=commit;h=a977dbbe78f4dcb64e008f41c8a46c4972af834b (5认同)