加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 为什么我的find -type d对文件夹中的每个文件执行fstat

发布时间:2020-12-14 02:52:40 所属栏目:Linux 来源:网络整理
导读:我正在寻找. -type d在一个相当大的目录树上.我只对在这个树中找到目录感兴趣,但是当我对进程运行一个strace以确保它正在按照我的预期进行时,我注意到有大量的操作被浪费在运行fstat文件上在树内. newfstatat(AT_FDCWD,"file1",{st_mode=S_IFREG|0600,st_siz
我正在寻找. -type d在一个相当大的目录树上.我只对在这个树中找到目录感兴趣,但是当我对进程运行一个strace以确保它正在按照我的预期进行时,我注意到有大量的操作被浪费在运行fstat文件上在树内.
newfstatat(AT_FDCWD,"file1",{st_mode=S_IFREG|0600,st_size=7690,...},AT_SYMLINK_NOFOLLOW) = 0
newfstatat(AT_FDCWD,"file2",st_size=7696,"file3",st_size=7687,"file4",st_size=10455,AT_SYMLINK_NOFOLLOW) = 0

是不是意识到inode指向一个目录,直到它执行fstat?如果是这样的话,那将需要很长时间.其中一些目录可能包含数百万个项目,但我真的只关心目录.

最后,我想要一份关于文件树中每个目录的dirsize和路径的报告.对我来说,最快/最有效的方法是什么?

解决方法

是的,看起来确实是找到使用 fstat确定文件类型的情况.鉴于 dirent包含自内核2.6.4以来的信息,这是有点令人惊讶的.

并非所有文件系统都支持扩展的dirent行为,因此在您的情况下这是正确的,或者find不使用它.如果不知道您的文件系统类型,我们无法决定.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读