linux查询匹配个数,查找与linux中目录中的模式匹配的文件数

fedorqui..

45

使用它可能更好find:

find . -name "pattern_*" -printf '.' | wc -l

在您的具体情况:

find . -maxdepth 1 -name "20061101-20131101_kh5x7tte9n_2010_*" -printf '.' | wc -m

find将返回符合条件的文件列表.-maxdepth 1将使搜索只在路径中完成,没有子目录(感谢Petesh!).-printf '.'将为每个匹配打印一个点,以便具有新行的名称不会wc -m中断.

然后wc -m会指出行数.

性能比较两种可能的选择:

让我们用这种模式创建10 000个文件:

$ for i in {1..10000}; do touch 20061101-20131101_kh5x7tte9n_201_$i; done

然后比较使用ls -1 ...或获取结果所需的时间find ...:

$ time find . -maxdepth 1 -name "20061101-20131101_kh5x7tte9n_201_*" | wc -l

10000

real 0m0.034s

user 0m0.017s

sys 0m0.021s

$ time ls -1 | grep 20061101-20131101_kh5x7tte9n_201 | wc -l

10000

real 0m0.254s

user 0m0.245s

sys 0m0.020s

find快了x5倍!但如果我们使用ls -1f(再次感谢Petesh!),那么ls甚至比find:

$ time ls -1f | grep 20061101-20131101_kh5x7tte9n_201 | wc -l

10000

real 0m0.023s

user 0m0.020s

sys 0m0.012s

为了防止递归到子目录,你可以使用`-maxdepth 1`(如果在那个版本的find中支持它) (2认同)

ls在输出之前有排序的坏习惯,你应该用`ls -1 -f`进行测试,以获得与性能评估相似的行为 (2认同)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值