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

unix – 快速获取与模式匹配的文件数

发布时间:2020-12-15 21:31:18 所属栏目:安全 来源:网络整理
导读:我有一个目录,目前有8K文件.在接下来的一个月左右,这个数字将增长到100K以上.我需要能够计算匹配特定模式的目录中的文件.模式匹配增加了大量的时间: [XXXXXX@login-0-0 scripts]$time ls | grep . -c8373real 0m0.115suser 0m0.109ssys 0m0.009s[XXXXXX@log
我有一个目录,目前有8K文件.在接下来的一个月左右,这个数字将增长到100K以上.我需要能够计算匹配特定模式的目录中的文件.模式匹配增加了大量的时间:

[XXXXXX@login-0-0 scripts]$time ls | grep . -c
8373

real    0m0.115s
user    0m0.109s
sys 0m0.009s
[XXXXXX@login-0-0 scripts]$time ls *.o* | grep . -c
6262

real    0m1.997s
user    0m0.121s
sys 0m0.270s

随着文件数量的不断增加,按模式计数的时间将变得太大.我可以解决这个问题吗?

作为旁注,文件系统是Lustre,我可以处理非便携式解决方案.

解决方法

或许让你失望的是你的glob实际上是通过bash扩展的,参数传递给ls,所以这是一些额外的工作.这对我有用:

user@host:~/junk$time find . | wc -l
188318

real    0m0.202s
user    0m0.076s
sys 0m0.136s

user@host:~/junk$time find . -name '*.o' | wc -l
374

real    0m0.243s
user    0m0.160s
sys 0m0.080s

速度差别不大.请注意,这是递归的,但如果不需要,可以设置maxdepth.

也许是时候清理一些垃圾……

(编辑:李大同)

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

    推荐文章
      热点阅读