金笛邮件论坛  

返回   金笛邮件论坛 > 金笛电子邮件系统 > 金笛邮件售后服务专区

回复
 
LinkBack 主题工具 显示模式
旧 2009-07-10, 09:26   #1 (permalink)
普通会员
 
s0z0y 的头像
 
注册日期: 2009-07-01
帖子: 68
默认 一个shell问题

遇到这样一个实际问题,一个目录下有10000个文件,如果我从中查找包含 pattern的字符串,直接使用 grep "pattern" * 会报参数太长不能执行;而使用 ls | xargs grep "pattern" 则没有问题。

事实上"参数太长不能执行"这是由shell(bash环境) 报出来的,而非grep命令。
我在 rhel5 上(bash版本 3.1.17) 验证最多参数长度是 23534个。
在 fc 9 上 (bash版本 3.2.33) 最多参数长度在 39万到40万之间。

xargs 把这些参数直接交给了调用的程序,而不再通过bash。当超出bash 限定的最大参数时,也不再检查。
至于能否接受这么多的参数,就看命令本身怎么实现了, grep pattern files[] 按我的理解(也是主观臆测) files[] 的长度应该是一个int类型的最大长度/2(排除负数)。即2^30个。
s0z0y 当前离线   回复时引用此帖
回复

书签


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码
Trackbacks are 启用
Pingbacks are 启用
Refbacks are 启用



所有时间均为北京时间。现在的时间是 16:14


Powered by vBulletin® 版本 3.8.3
版权所有 ©2000 - 2024,Jelsoft Enterprises Ltd.